设为首页 收藏本站
查看: 626|回复: 0

[经验分享] 总结一下MySQL中的锁机制

[复制链接]

尚未签到

发表于 2018-9-30 10:57:03 | 显示全部楼层 |阅读模式
今天来简单总结一下MySQL的锁机制,不妥的欢迎拍砖!  1、对于MySQL来说,有三种锁的级别:页级、表级、行级。
  页级的典型代表引擎为BDB。
  表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。
  行级的典型代表引擎为INNODB。
  2、我们实际应用中用的最多的就是行锁了。
  行级锁的优点如下:
  1)、当很多连接分别进行不同的查询时减小LOCK状态。
  2)、如果出现异常,可以减少数据的丢失。因为一次可以只回滚一行或者几行少量的数据。
  行级锁的缺点如下:
  1)、比页级锁和表级锁要占用更多的内存。
  2)、进行查询时比页级锁和表级锁需要的I/O要多,所以我们经常把行级锁用在写操作而不是读操作。
  3)、容易出现死锁。
  3、MySQL用写队列和读队列来实现对数据库的写和读操作。
  对于写锁定如下:
  1)、如果表没有加锁,那么对其加写锁定。
  2)、否则,那么把请求放入写锁队列中。
  对于读锁定如下:
  1)、如果表没有加写锁,那么加一个读锁。
  2)、否则,那么把请求放到读锁队列中。
  当然我们可以分别用low_priority 以及high_priority在写和读操作上来改变这些行为。
  4、下面我来一个简单的例子解释上面的说法。
  我们来运行一个时间很长的查询
  1)、客户端1:
  mysql> select count(*) from content group by content;
  ...
  客户端2:

  mysql> update content set content = 'I love you' where>  Query OK, 1 row affected (30.68 sec)
  Rows matched: 1  Changed: 1  Warnings: 0
  用了半分钟。
  2)、我们现在终止客户端1。
  此时客户端2:

  mysql> update content set content = 'I hate you' where>  Query OK, 1 row affected (0.02 sec)
  Rows matched: 1  Changed: 1  Warnings: 0
  仅仅用了20毫秒。
  这个例子很好的说明了读写队列的运行。
  对于1中的客户端1,此时表没有加锁,当然也没有加写锁了,那么此时客户端1对表加了一个读锁。
  对于1中的客户端2,此时因为表有一个读锁,所以把UPDATE请求放到写锁定队列中。
  当读锁释放的时候,也就是SHOW PROCESSLIST中STATUS 为COPY TO TMP TABLE的时候,UPDATE操作开始执行。
  5、可以在REPLICATION中对MASTER 和SLAVE运用不同的锁定使系统达到最佳的性能。(当然这个前提是SQL语句都是最优的。)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-606652-1-1.html 上篇帖子: MYSQL人事工资管理系统--设计视图(四) 下篇帖子: MYSQL ROOT权限丢失的解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表