MySQL锁

在 MySQL 中,常见的锁类型有以下几种:

1. 共享锁(Shared Lock,简称 S 锁):

也称为读锁,多个事务可以同时持有共享锁,用于读取数据,不会阻止其他事务获取共享锁,但会阻止其他事务获取排他锁。

2. 排他锁(Exclusive Lock,简称 X 锁):

也称为写锁,只有一个事务可以持有排他锁,用于修改数据,会阻止其他事务获取共享锁和排他锁。

3. 记录锁(Record Lock):

在 InnoDB 存储引擎中,为了保证事务的隔离性,会对查询结果集中的每一行都进行加锁,这种锁就称为记录锁。

4. 意向锁(Intention Lock):

在 InnoDB 存储引擎中,为了优化锁的竞争,引入了意向锁的概念。当事务在某一行数据上请求共享锁或排他锁时,InnoDB 会在表级别上自动获取相应的意向锁,表示该事务可能会在该表的某一行上获取相应的共享锁或排他锁。

5. 自增锁(Auto-Increment Lock):

在使用自增主键的表上插入新记录时,InnoDB 会对自增列进行加锁,以防止多个事务同时插入新记录导致主键冲突。

 

需要注意的是,锁的使用需要根据具体的业务需求和并发访问情况来进行优化,尽可能减少锁的持有时间和锁的粒度,避免死锁和长时间等待的情况。

posted on 2023-05-21 20:54  SuperGuoYa  阅读(199)  评论(0编辑  收藏  举报

导航