下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
降低锁竞争减少mysql用户等待时间排行榜收藏打印发给朋友举报来源:IT专家网发布者:纳美人热度1票浏览29次【共0条评论】【我要评论】时间:2011年9月05日09:51通过锁机制,可以实现多线程同时对某个表进行操作。如下图所示,在某个时刻,用户甲、用户乙、用户丙可能会同时或者先后(前面一个作业还没有完成)对数据表A进行查询或者更新的操作。当某个线程涉及到更新操作时,就需要获得独占的访问权。在更新的过程中,所有其它想要访问这个表的线程必须要等到其更新完成为止。此时就会导致锁竞争的问题。从而导致用户等待时间的延长。在这篇文章中,笔者将跟大家讨论,采取哪些措施可以有效的避免锁竞争,减少MySQL用户的等待时间。iclcct ——k————k——『JSelectUpdate\&h「占 A背景模拟:为了更加清楚的说明这个问题,笔者先模拟一个日常的案例。通过案例大家来阅读下面的内容,可能条理会更加的清晰。现在MySQL数据库遇到如上图所示这种情况。首先,用户甲对数据表A发出了一个查询请求。然后,用户乙又对数据表A发出了一个更新请求。此时用户乙的请求只有在用户甲的作业完成之后才能够得到执行。最后,用户丙又对数据表A发出了一个查询请求。在MySQL数据库中,更新语句的优先级要比查询语句的优先级高,为此用户丙的查询语句只有在用户乙的更新作业完成之后才能够执行。而用户乙的更新作业又必须在用户甲的查询语句完成之后才能够执行。此时就存在比较严重的锁竞争问题。现在数据库工程师所要做的就是在数据库设计与优化过程中,采取哪些措施来降低这种锁竞争的不利情况?措施一:利用LockTables来提高更新速度对于更新作业来说,在一个锁定中进行许多更新要比所有锁定的更新要来得快。为此如果一个表更新频率比较高,如超市的收银系统,那么可以通过使用LockTables选项来提高更新速度。更新的速度提高了,那么与Select查询作业的冲突就会明显减少,锁竞争的现象也能够得到明显的抑制。措施二:将某个表分为几个表来降低锁竞争如一个大型的购物超市,如沃尔玛,其销售纪录表每天的更新操作非常的多。此时如果用户在更新的同时,另外有用户需要对其进行查询,显然锁竞争的现象会比较严重。针对这种情况,其实可以人为的将某张表分为几个表。如可以为每一台收银机专门设置一张数据表。如此的话,各台收银机之间用户的操作都是在自己的表中完成,相互之间不会产生干扰。在数据统计分析时,可以通过视图将他们整合成一张表。措施三:调整某个作业的优先级默认情况下,在MySQL数据库中,更新操作比Select查询有更高的优先级。如上图所示,如果用户乙先发出了一个查询申请,然后用户丙再发出一个更新请求。当用户甲的查询作业完成之后,系统会先执行谁的请求呢?注意,默认情况下系统并不遵循先来后到的规则,即不会先执行用户乙的查询请求,而是执行用户丙的更新进程。这主要是因为,更新进程比查询进程具有更高的优先级。但是在有些特定的情况下,可能这种优先级不符合企业的需求。此时数据库管理员需要根据实际情况来调整语句的优先级。如果确实需要的话,那么可以通过以下三种方式来实现。一是通过LOW_PRIOITY属性。这个属性可以将某个特定的语句的优先级降低。如可以调低某个特定的更新语句或者插入语句的优先级。不过需要注意的是,这个属性只有对特定的语句有用。即其作用域只针对某个特定的语句,而不会对全局造成影响。二是通过HIGH_PRIOITY属性。与通过LOW_PRIOITY属性对应,有一个HIGH_PRIOITY属性。顾名思义,这个属性可以用来提高某个特定的Select查询语句的优先级。如上面这个案例,在用户丙的查询语句中加入HIGH_PRIOITY属性的话,那么用户甲查询完毕之后,会立即执行用户丙的查询语句。等到用户丙执行完毕之后,才会执行用户乙的更新操作。可见,此时查询语句的优先级得到了提升。这里需要注意,跟上面这个属性一样,这个作用域也只限于特定的查询语句。而不会对没有加这个参数的其他查询语句产生影响。也就是说,其他查询语句如果没有加这个属性,那么其优先级别仍然低于更新进程。三是通过SetLOW_PRIORIT_UPDATES=1选项。以上两个属性都是针对特定的语句,而不会造成全局的影响。如果现在数据库管理员需要对某个连接来调整优先级别,该如何实现呢?如上例,现在用户需要将用户丙连接的查询语句的优先级别提高,而不是每次查询时都需要使用上面的属性。此时就需要使用SetLOW_PRIORIT_UPDATES=1选项。通过这个选项可以制定具体连接中的所有更新进程都是用比较低的优先级。注意这个选项只针对特定的连接有用。对于其他的连接,就不适用。四是采用Low_Priority_updates选项。上面谈到的属性,前面两个针对特定的语句,后面一个是针对特定的连接,都不会对整个数据库产生影响。如果现在需要在整个数据库范围之内,降低更新语句的优先级,是否可以实现?如上面这个案例,在不使用其他参数的情况下,就让用户丙的查询语句比用户乙的更新具有更先执行?如果用户有这种需求的话,可以使用Low_Priority_updates选项来启动数据库。采用这个选项启动数据库时,系统会给数据库中所有的更新语句比较低的优先级。此时用户丙的查询语句就会比用户用户乙的更新请求更早的执行。而对于查询作业来说,不存在锁定的情况。为此用户甲的查询请求与用户丙的查询请求可以同时进行。为此通过调整语句执行的优先级,可以有效的降低锁竞争的情况。可见,可以利用属性或者选项来调整某条语句的优先级。如现在有一个应用,主要供用户来进行查询。更新的操作一般都是有管理员来完成,并且对于用户来说更新的数据并不敏感。此时基于用户优先的原则,可以考虑将查询的优先级别提高。如此的话,对于用户来说,其遇到锁竞争的情况就会比较少,从而可以缩短用户的等待时间。在调整用户优先级时,需要考虑其调整的范围。即只是调整特定的语句、还是调整特定的连接,又或者对整个数据库生效。措施四:对于混合操作的情况,可以采用特定的选项有时候会遇到混合操作的作业,如即有更新操作又有插入操作又有查询操作时,要根据特定的情况,采用特定的选项。如现在需要对数据表同时进行插入和删除的作业,此时如果能够使用InsertDelayed选项,将会给用户带来很大的帮助。再如对同一个数据表执行Select和Delete语句会有锁竞争的情况。此时数据库管理员也可以根据实际情况来选择使用DeleteLimint选项来解决所遇到速度问题。通常情况下,锁竞争与死锁不同,并不会对数据库的运行带来很大的影响。只是可能会延
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- xx系统运维方案
- 医院借用宿舍协议书
- 医工交叉学科攻博计划书
- Myristelaidate-sodium-生命科学试剂-MCE
- MTC420-生命科学试剂-MCE
- Moslosooflavone-Standard-生命科学试剂-MCE
- 计算机网络B学习通超星期末考试答案章节答案2024年
- 第七单元-语文园地七
- 第六单元-第六单元素养提升
- 时间的力量:企业时间管理实践与思考
- 绵阳市高中2022级(2025届)高三第一次诊断性考试(一诊)语文试卷(含答案)
- 自然资源调查监测劳动和技能竞赛
- 6.1 我对谁负责 谁对我负责 课件-2024-2025学年统编版道德与法治八年级上册
- 2023-2024学年天津市经开区国际学校八年级(上)期末物理试卷
- DB23T 3842-2024 一般化工企业安全生产标准化评定规范
- 期中模拟押题卷(1-3单元)(试题)-2024-2025学年苏教版数学六年级上册
- 环氧树脂项目可行性研究报告项目报告
- 阜阳职业技术学院2024年教师招聘招聘历年高频500题难、易错点模拟试题附带答案详解
- 北京市海淀区2024学年七年级上学期语文期中试卷【含参考答案】
- 2024-2025学年人教版数学三年级上册 第三单元 测量 单元测试卷(含答案)
- 2024新信息科技三年级第四单元:创作数字作品大单元整体教学设计
评论
0/150
提交评论