一、常见锁类型

1、共享锁(Shared Lock, S Lock)

  • 允许多个事务同时读取资源,但不允许修改
  • 其他事务也可以对同一资源加共享锁

2、排他锁(Exclusive Lock, X Lock)

  • 允许事务读取和修改资源
  • 其他事务不能对该资源加任何锁

3、更新锁(Update Lock, U Lock)

  • 用于事务准备更新资源时,防止死锁

4、模式锁(Schema Lock)

  • 用于保护数据库对象的结构(如表结构)

5、大批量更新锁(Bulk Update Lock, BU Lock)

  • 用于批量插入操作,通过减少锁数量提升性能

6、键范围锁(Key-Range Lock)

  • 用于索引数据,防止幻读(事务已读范围内有新行插入)

7、行级锁(Row-Level Lock)

  • 锁定表中的特定行,其他行仍可并发访问

8、页级锁(Page-Level Lock)

  • 锁定数据库中的特定页(固定大小的数据块)
  • MySQL InnoDB 默认不使用页锁,而是使用行锁;MyISAM 使用页级锁

9、表级锁(Table-Level Lock)

  • 锁定整张表
  • 实现简单,但可能显著降低并发性能