zoukankan      html  css  js  c++  java
  • mysql 中的共享锁和排他锁

    共享锁(share lock)

    共享锁又称读锁,是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁。

    如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获取共享锁的事务只能读取数据,不能修改数据。

    用法:select ... lock in share mode

    在查询语句后面增加 lock in share mode,mysql 会对查询结果中的每行都加共享锁,当没有其他线程对查询结果集中任何一行使用排他锁时,可以成功申请共享锁,否则会被阻塞。其他线程也可以读取使用了共享锁的表,而且这些线程读取的是同一个版本的数据。

    排他锁(exclusive lock)

    排他锁又称写锁,如果事务 T 对数据 A 加上排他锁后,则其他事务不能再对 A 加任何类型的锁。获取排他锁的事务既能读数据,又能修改数据。

    用法:select ... for update

    在查询语句后面增加 for update,mysql 会对查询结果中的每行都加排他锁,当没有其他线程对查询结果集中的任何一行使用排他锁时,可以成功申请排他锁,否则会被阻塞。

    需要注意的是:在事务中,锁才会生效。

  • 相关阅读:
    SQL函数 【转】
    Oracle修改表,提示“资源正忙,要求指定NOWAIT”
    网关的通俗讲解【转】
    程序员小抄大全
    JQuery 中each的使用方法
    JQueryUI入门所有效果说明【转】
    随记小笔(20100820)
    asp.net操纵Oracle存储过程
    JQuery技巧总结【转】
    Centos7 进入单用户模式,修复系统
  • 原文地址:https://www.cnblogs.com/eleven24/p/9147887.html
Copyright © 2011-2022 走看看