SQL 面试题 目录

SQL 中有哪些类型的锁 (如:共享锁, 排他锁)?

推荐答案

在SQL中,常见的锁类型包括:

  1. 共享锁(Shared Lock):允许多个事务同时读取同一资源,但不允许任何事务修改该资源。
  2. 排他锁(Exclusive Lock):只允许一个事务独占资源,其他事务既不能读取也不能修改该资源。
  3. 意向共享锁(Intent Shared Lock):表示事务打算在资源上放置共享锁。
  4. 意向排他锁(Intent Exclusive Lock):表示事务打算在资源上放置排他锁。
  5. 更新锁(Update Lock):用于防止死锁,通常在更新操作中使用,允许事务读取资源并稍后升级为排他锁。
  6. 行级锁(Row-Level Lock):锁定表中的单行数据。
  7. 页级锁(Page-Level Lock):锁定表中的一页数据。
  8. 表级锁(Table-Level Lock):锁定整个表。

本题详细解读

共享锁(Shared Lock)

共享锁允许多个事务同时读取同一资源,但不允许任何事务修改该资源。这种锁通常用于读取操作,确保在读取过程中数据不会被其他事务修改。

排他锁(Exclusive Lock)

排他锁只允许一个事务独占资源,其他事务既不能读取也不能修改该资源。这种锁通常用于写操作,确保在修改数据时不会有其他事务干扰。

意向共享锁(Intent Shared Lock)

意向共享锁表示事务打算在资源上放置共享锁。这种锁通常用于表级锁,表示事务打算在表中的某些行上放置共享锁。

意向排他锁(Intent Exclusive Lock)

意向排他锁表示事务打算在资源上放置排他锁。这种锁通常用于表级锁,表示事务打算在表中的某些行上放置排他锁。

更新锁(Update Lock)

更新锁用于防止死锁,通常在更新操作中使用。它允许事务读取资源并稍后升级为排他锁。这种锁可以防止多个事务同时尝试更新同一资源,从而避免死锁。

行级锁(Row-Level Lock)

行级锁锁定表中的单行数据。这种锁粒度最小,可以最大程度地提高并发性,但也会增加锁管理的开销。

页级锁(Page-Level Lock)

页级锁锁定表中的一页数据。这种锁的粒度介于行级锁和表级锁之间,适用于中等规模的并发操作。

表级锁(Table-Level Lock)

表级锁锁定整个表。这种锁的粒度最大,适用于需要锁定整个表的操作,但会显著降低并发性。

纠错
反馈