MySQL锁机制
2022-07-18 22:04:31 11 举报
简单汇总了InnoDB和MyISAM的锁机制
作者其他创作
大纲/内容
InnoDB
②一个线程对表进行“写”时,其他线程不可“读”“写”。
允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁。施加前要先取得该表的意向排他锁(表锁)
维护表元数据的数据的一致性,保证表结构统一
一种特殊的表锁,在重命名或删除一张表时创建
用户锁
行锁
全局锁
共享锁
服务器级别
执行更新操作(UPDATE、DELETE、INSERT 等)前自动施加
分为显式,隐式
命名锁
①一个线程对表进行“读”时,其他线程不可“写”。
执行查询语句(SELECT)前自动施加
MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。(适合读)
对整个数据库加的锁
InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。(适合写)
不支持事务,外键。
通过给索引上的索引项加锁来实现,因此检索数据时没有索引将使用表锁
排他锁
表独占写锁
数据锁
命名互斥量
间隙锁
元数据锁(MDL锁)
表锁
由行锁+间隙锁组成的闭区间锁。
给符合条件的已有数据记录的索引项加的范围锁。当我们插入一条记录时,会锁住当前插入索引节点的左右索引节点所围起来的开区间,如果左边或者右边没有索引节点,mysql 就会从自己定义的最大或者最小的值进行锁住。
MyISAM
NEXT-KEY
允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。施加前要先取得该表的意向共享锁(表锁)
表共享读锁
0 条评论
下一页