请注意,本文编写于 562 天前,最后修改于 562 天前,其中某些信息可能已经过时。
在数据库系统中,latch(也称为轻量级锁)和lock(也称为重量级锁)是两种并发控制机制。
-
Latch(轻量级锁):
- Latch是一种低级别的并发控制机制,通常用于保护数据结构的一致性。它是一种自旋锁,使用忙等待的方式来实现。
- Latch是一种短暂的锁,它的获取和释放操作不涉及上下文切换,因此开销较小。
- Latch的目的是提供一种临时的互斥机制,以避免竞争条件和数据不一致问题。
- Latch通常用于保护内存数据结构,如缓冲池中的页、索引树节点等。
-
Lock(重量级锁):
- Lock是一种高级别的并发控制机制,通常用于保护数据库中的表、行、事务等。
- Lock是一种长时间的锁,它的获取和释放操作涉及到上下文切换,因此开销较大。
- Lock通常用于实现事务的隔离性,保证并发事务之间的互斥和一致性。
- Lock通常支持多种模式,如共享锁(允许多个事务同时读取数据)和排他锁(只允许一个事务修改数据)。
区别:
- Latch是一种轻量级的自旋锁,适用于保护内存数据结构的一致性,开销较小。而Lock是一种重量级的锁,适用于保护数据库中的表、行、事务等,开销较大。
- Latch的获取和释放操作不涉及上下文切换,而Lock的获取和释放操作涉及到上下文切换。
- Latch通常用于短暂的互斥操作,Lock通常用于长时间的事务隔离。
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!