zoukankan      html  css  js  c++  java
  • 数据库的锁机制

    读锁:LOCK in SHARE MODE    写锁:for UPDATE

    行锁 (锁住某行数据)

    SELECT name FROM t_goods_info where code = 'huawei' for UPDATE;

    页锁 (锁住某些数据)

    SELECT NAME FROM t_goods_info where code in ('huawei','xiaomi') for UPDATE;

    表锁 (锁住整张表)

    select name from t_goods_info for update

    ----------------------------------------------------------------

    读锁能够对读请求共享,写锁具有排他性。

    (1)当我们对一行数据开启事务后加读锁,我们还能再次加读锁;若是加写锁就会因为锁占用而出现等待,只有事务commit后才能加锁。

      

    (2) 我们对一行数据加写锁后,只有事务commit后才能加其他锁(读锁/写锁)。

      

    死锁:

     T1: select * from table (加共享锁)
           update table set column1='hello'
    T2: select * from table (加共享锁)
           update table set column1='hello'
    
    运行过程: T1  select完就发生了死锁,程序停止了。
    
    原理:T1先到达执行select加共享锁,然后T2执行select加共享锁;
             T1 select执行完之后准备update,此时T2木有释放锁,所以
             T1无法执行,这样T1没有执行完,T2也无法执行。 

    乐观锁和悲观锁:

       

  • 相关阅读:
    机器学习【工具】:Numpy
    机器学习【算法】:KNN近邻
    【笔记】:字典内部剖析
    【笔记】:谁偷了我的内存?
    什么是RESTful框架
    音频下载服务
    【模块】:Requests(二)
    【模块】:Weakref
    异步Web服务(二)
    【Win10】UAP/UWP/通用 开发之 RelativePanel
  • 原文地址:https://www.cnblogs.com/wlwl/p/10002912.html
Copyright © 2011-2022 走看看