zoukankan      html  css  js  c++  java
  • 数据库共享锁(读锁)与排它锁(写锁)和 读写锁的实现原理

    共享锁,又称之为读锁,简称S锁,当事务对数据加上读锁后,其他事务只能对该数据加读锁,不能做任何修改操作,也就是不能添加写锁。只有当数据上的读锁被释放后,其他事务才能对其添加写锁。共享锁主要是为了支持并发的读取数据而出现的,读取数据时,不允许其他事务对当前数据进行修改操作,从而避免”不可重复读”的问题的出现。

    排它锁,又称之为写锁,简称X锁,当事务对数据加上写锁后,其他事务既不能对该数据添加读写,也不能对该数据添加写锁,写锁与其他锁都是互斥的。只有当前数据写锁被释放后,其他事务才能对其添加写锁或者是读锁。写锁主要是为了解决在修改数据时,不允许其他事务对当前数据进行修改和读取操作,从而可以有效避免”脏读”问题的产生。

    读写锁的实现原理

    先搞清楚读写锁要做什么。

    基本就是 读读不互斥,读写互斥,写写互斥。可重入。

    读行为

    当写锁未获取,加上读锁(通知其他请求数据在读状态),读数据

    当写锁被获取,等待,直到写锁未获取,加读锁,读数据

    写行为

    当写锁未获取,等待获取写锁

    当写锁被获取,加写锁。读锁未获取,等待获取读锁

    当写锁被获取,读锁被获取,写数据

    参考资料:

    浅谈数据库共享锁与排它锁 - 知乎 (zhihu.com)

    redis 读写锁实现 - 云+社区 - 腾讯云 (tencent.com)

  • 相关阅读:
    ibatis学习笔记
    记ibatis使用动态列查询问题(remapresults)
    jQuery(九)、ajax对象操作
    jQuery(八)、ajax
    jQuery(七)、效果和动画
    jQuery(六)、事件
    jQuery(五)、筛选
    jQuery(四)、文档处理
    jQuery(三)、属性、CSS
    jQuery(二)、选择器
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/15163630.html
Copyright © 2011-2022 走看看