首页 / MYSQL / MySql的锁机制简单梳理
MySql的锁机制简单梳理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySql的锁机制简单梳理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2209字,纯文字阅读大概需要4分钟。
内容图文
![MySql的锁机制简单梳理](/upload/InfoBanner/zyjiaocheng/446/5a3a113df2ef45f6a7d29db1d4d1efcd.jpg)
这里解释一下有些博客和资料中的分类是有差异的,记得有一篇博客说表锁属于乐观锁误导了我,在面试时面试官问了我这个问题我说属于乐观锁他又问了一下你确定吗...我就知道错了。
乐观锁
(Optimistic Concurrency Control,OCC):假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。也没具体指定怎么检查。
悲观锁
(Pessimistic Concurrency Control,PCC):假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。
相比大多数程序员对这两种锁概念比较清晰,不多赘述。
那么主要的问题是行锁和表锁。
行锁
支持行锁的存储引擎有主流的InnoDb,XtarDb等
行锁的劣势:开销大;加锁慢;会出现死锁
行锁的优势:锁的粒度小,发生锁冲突的概率低;处理并发的能力强
行锁本身支持的并发比表锁高,但是换来的缺点是效率问题,带来了巨大的锁开销,行锁只是在存储引擎中实现的而与mysql架构曾没有任何关系,说的直白一点就是mysql并不关心存储引擎的锁实现机制,只是存储引擎本身实现了行锁。
行锁的读写锁机制
行锁本身为小粒度锁,所以相应的读写锁没有那么多限制,在增删改操作时会使用锁定行数据,查询时会使用读锁锁定行数据,写锁为排他锁,可以理解为单线程操作行数据,读锁为共享锁支持多数据访问行。而InnoDB支持表锁和行锁,在有索引条件的语句操作中会使用行锁,若没有索引操作或是全表扫描时InnoDB会使用表锁。
表锁
表锁本身是mysql架构实现的而并非某一存储引擎,大家口中的MyISAM的表锁并不是存储引擎去具体实现的。
表锁的劣势:锁力度大,锁冲突几率大,支持并发低
表锁的优势:开销小,枷锁快,不会死锁
表锁是MySql的基本策略,也是开销最小的锁策略。
表锁的读写锁机制
表锁本身粒度比较大,所以面临的冲突也比较多,在增删改操作时加写锁,此时会阻塞其他读写操作,而表锁的写锁却又更高的优先级,例如有读锁在队列中,会被写锁有线执行。
读写锁
读写锁是并发控制中的经典解决方案,读锁就是共享锁,写锁就是排他锁。
共享锁可以理解为多个客户读取同一个资源,他们互不干扰。
排他锁会锁定当前要修改的资源,禁止其他用户修改和访问此资源,保证资源的唯一性,防止多个用户修改同
一资源
MySql的锁机制简单梳理
标签:mysql锁 策略 分层 实现原理 假设 提交 逻辑 数据完整性 mys
本文系统来源:https://www.cnblogs.com/xiaozhang666/p/14189665.html
内容总结
以上是互联网集市为您收集整理的MySql的锁机制简单梳理全部内容,希望文章能够帮你解决MySql的锁机制简单梳理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。