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

      行级锁分为共享锁和排他锁两种

      

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

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

      用法:

      select...LOCK IN SHARE MORE

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

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

      用法:SELECT... FOR UPDATE

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

      

      意向锁

      innodb还有两个表锁

      1、意向共享锁(IS):表示事务准备给数据航加入共享锁,也就是说一个数据行加共享锁钱必须先取得该表的IS

      2、意向排他锁(IX):表示事务准备给数据行加入排他锁,说明事务在一个数据航加排他锁钱必须先取得该表的IX

      意向锁是Innodb自动加的,不需要用户干预

      

      共享锁:SELECT ... LOCK IN SHARE MODE;

      排他锁:SELECT ... FOR UPDATE;

  • 相关阅读:
    css 基线与行高
    requests超时
    小记--------Ambari2.7.4集成Kylin3.0
    记一次--------HDP3.1 spark创建表hive读不到,hive创建表spark读不到
    记一次-------- sqoop同步mysql到hive 执行太慢
    记一次--------hive创建表comment中文乱码解决
    .Net Core学习之路-跳坑(一)
    NGINX、HAProxy和Traefik负载均衡能力对比
    idea 一键启动多个微服务项目
    vuedraggable自由拖拽
  • 原文地址:https://www.cnblogs.com/alighie/p/8298436.html
Copyright © 2011-2022 走看看