zoukankan      html  css  js  c++  java
  • mysql的锁机制

    一、读锁(共享锁/Share Locks,S锁)。

       1、select * from table_name where ... lock in share mode。(事务A)

          (1)这种方式是获取指定记录行的读锁,那么这些记录行可以被其他事务获取读锁,但是这些行一定会拒绝被其他事务获取写锁,如果其他事务尝试获取这些记录行的写锁,那么只有当这些记录行的所有读锁都释放了才能获取到写锁,这期间一直处于阻塞状态。因此只允许在所有会话之间共享,不能被任何会话独占;

          (2)如果现在事务A执行更新update/删除delete这些被自己加了读锁的记录行时,是否更新update/删除delete成功根据情况而定。如果执行更新update/删除delete时这些记录行如果还没有被其他事务获取读锁,那么执行更新update/删除delete成功;如果执行更新update/删除delete时这些记录行已经被其他事务获取读锁,而且不释放,那么执行更新update/删除delete失败。

          (3)因此,在事务A中添加指定记录行的读锁的作用:防止事务A执行期间这些记录行被修改update/删除delete,同时事务A在执行期间没有更新/删除这些记录行的需求    

    二、写锁(排他锁/Exclusive Locks,X锁)。

       1、select * from table_name where ...  for update。(事务A)

        (1)这种方式是获取指定记录行的写锁,那么这些记录行就不能被其他事务获取读锁和排他写锁。如果事务A需要对这些记录行进行更新/删除操作。

    三、

  • 相关阅读:
    6 Django的视图层
    5 Django-2的路由层(URLconf)
    4 Django简介
    3 web框架
    2 http协议
    1 web应用
    15-jQuery补充
    14-jQuery的ajax
    13-轮播实现(各种)
    12-事件委托(事件代理)
  • 原文地址:https://www.cnblogs.com/igoodful/p/9039894.html
Copyright © 2011-2022 走看看