码上敲享录 > mysql面试题 > 行级锁、表级锁、页级锁的描述与特点

行级锁、表级锁、页级锁的描述与特点

上一章章节目录下一章 2023-07-17已有170人阅读 评论(0)

行级锁(Row-level locks):

- 描述:行级锁是对表中的行进行锁定,使得只有持有锁的事务可以访问或修改被锁定的行,其他事务需要等待锁被释放或者请求的行不被锁定。

- 特点:

 - 最细粒度的锁,只锁定需要访问或修改的行,减少锁冲突。

 - 允许多个事务并发地访问同一表,只有互斥的行访问需要等待锁。

 - 可以提供更高的并发性能和更好的数据隔离性。

 - 适用于需要精确控制并发访问的场景,如高并发的数据查询或更新。


表级锁(Table-level locks):

- 描述:表级锁是对整个表进行锁定,使得只有持有锁的事务可以访问或修改整个表,其他事务需要等待锁被释放。

- 特点:

 - 最粗粒度的锁,锁定整个表,导致其他事务无法并发访问表中的任何行。

 - 不如行级锁提供细粒度的并发控制和并发性能。

 - 适用于少数查询或更新整个表的情况,如表的重建、备份或DDL操作。


页级锁(Page-level locks):

- 描述:页级锁是对数据页进行锁定,一个数据页通常包含多个表的行数据,使得只有持有锁的事务可以访问或修改被锁定的数据页,其他事务需要等待锁被释放。

- 特点:

 - 提供介于行级锁和表级锁之间的锁粒度。

 - 可以减少锁的粒度,提高并发性能,避免全表锁带来的并发瓶颈。

 - InnoDB存储引擎在实现上没有直接使用页级锁,而是将行级锁和表级锁的组合来实现。


行级锁、表级锁和页级锁是MySQL常见的锁级别,它们在锁的粒度和并发控制方面具有不同的特点。行级锁提供最细粒度的并发控制,适用于高并发访问行的场景;表级锁提供最粗粒度的并发控制,适用于少量全表操作的场景;而页级锁提供了介于行级锁和表级锁之间的锁粒度选择。根据具体的应用需求和并发场景,需要选择合适的锁级别来平衡并发性能和数据一致性。


向大家推荐《Activiti工作流实战教程》:https://xiaozhuanlan.com/activiti
0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交