加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL锁机制的详细解析

发布时间:2022-02-15 20:53:54 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要介绍MySQL锁机制的详细分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 文章目录 锁 锁分类 共享锁(读锁,读写互斥,读读互不影响) 排他锁(写锁,独占锁) 共享锁和排他锁的区别 表锁 为什么需要加入意向锁
       这篇文章主要介绍MySQL锁机制的详细分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
 
文章目录
 

锁分类
共享锁(读锁,读写互斥,读读互不影响)
排他锁(写锁,独占锁)
共享锁和排他锁的区别
表锁
为什么需要加入意向锁
意向锁:意向共享锁和意向排他锁
单个表锁定
全局表锁定
行锁
行锁升级为表锁(行锁实际是给索引加锁,如果没用索引而全表扫描,则会给全表加锁)
修改、删除某一行记录,且未提交事务时,该行会一直被行锁锁定
记录锁
间隙锁(Gap Locks)
间隙锁的作用:防止幻读
innodb自动使用间隙锁的条件
间隙锁锁定的区域
next-key锁【临键锁】
记录锁、间隙锁、临间锁的区别

 
锁是计算机协调多个线程访问同一共享资源的机制,主要用于解决多线程访问同一共享资源的并发安全问题。
 
锁分类
 
(1)从性能分为:乐观锁和悲观锁
MySQL中采用版本号控制,JVM中使用CAS
 
(2)从数据库操作类型分为:读锁(共享锁)、写锁(排他锁) 【读锁和写锁都属于悲观锁】
 
读锁(共享锁):针对相同行记录,多个读操作可以同时进行,但任何事务都不能进行
写锁(排他锁):获取排他锁的事务既能读数据,又能修改数据。获取到写锁的事务为完成之前,会阻塞其他事务获取写锁或读锁。
(3)从颗粒度划分为,表锁和行锁
 
注意:
(1)读锁、写锁都属于行级锁,即事务1 对商品A 获取写锁,和事务2对商品B 获取写锁互相不会阻塞的。
(2)如果sql语句使用了行锁,当SQL未使用索引而使用全表扫描的时候,行级锁会变成表锁。
 
(3)锁只有在执行commit或者rollback的时候才会释放,并且所有的锁都是在同一时刻被释放。
(4)Innodb引擎执行普通的修改、删除sql语句时,会给修改和删除的行加行锁。

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!