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需要对这些记录行进行更新/删除操作。

    三、

  • 相关阅读:
    Oracle Haip无法启动问题学习
    OGG-Veridata如何对比没有主键的表?
    除PerfDog之外,还有什么性能测试工具。
    test
    Android系统WiFi网络架构
    audit2allow 添加SELinux权限
    select、poll、epoll之间的区别总结
    属性问题展开的selinux权限介绍
    android property属性property_set()&& property_get() selinux权限问题
    关于网络&wifi基础内容
  • 原文地址:https://www.cnblogs.com/igoodful/p/9039894.html
Copyright © 2011-2022 走看看