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 会对查询结果中的每行都加排他锁,当没有其他线程对查询结果集中的任何一行使用排他锁时,可以成功申请排他锁,否则会被阻塞。

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

  • 相关阅读:
    ISTQB测试人员认证 初级(基础级)大纲
    5.2 测试计划和估算
    4. 测试设计技术
    V模型与测试级别
    1.3 Seven Testing Principles
    什么是DNS?
    总结SQL查询慢的50个原因
    CPU分几核几核的是什么意思?
    监控查询慢sql
    关于并发用户数的思考-通过PV量换算并发
  • 原文地址:https://www.cnblogs.com/eleven24/p/9147887.html
Copyright © 2011-2022 走看看