数据库中锁机制的实现

来源:互联网 发布:2017淘宝恶意退款教程 编辑:程序博客网 时间:2024/06/02 05:00

    DBMS 必定实现了锁机制,但是可能实现方案不同。

    比如,我们这里有一个行资源。实现锁机制有以下不同的方案:

    1. 实现一个锁管理器用来对系统中所有的锁进行管理。当一个用户试图对该行锁定时,首先查找所管理器,确认该行没有被其他应用占用。

    2. 不实现锁管理器。由该行确认其是否被锁定。 既然要锁定该行,那么直接问这一行她之前是否已经被锁定好了。如果没有,就锁定;已被锁定,则等待。

    可以看出,方案2 优点是比较明显的。只需要访问该行,就可确定是否锁定,而不需要去询问第三方(锁管理器)。但是很明显的,我们给该行打了标签,必然会占用一定的内存。而频繁的锁定释放也会占用一定的系统资源。不过相对于带来的优势来说,还是比较划算的。



    Oracle 中的 latch(闩): 一种锁,用户协调对内存,对象等的访问。例如一个加载到内存中的多行。可能对一行的修改就需要修改整个内存块的组织结构。因此需要一种轻量级的锁机制来控制。