MySQL锁机制的详细解析
发布时间:2022-02-15 15:49:58 所属栏目: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语句时,会给修改和删除的行加行锁。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |