• 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;

  • 相关阅读:
    html标签
    正则表达式判断号码靓号类型
    power函数:求底的n次幂
    php5.3的新特性
    xml方式操作txt文件
    什么是闭包?
    php设计模式单例模式
    面试总结
    统计ip代码
    XSL语言学习
  • 原文地址:https://www.cnblogs.com/alighie/p/8298436.html
Copyright © 2020-2023  润新知