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;

  • 相关阅读:
    WCF里几个基本知识点
    MVC3+EntityFramework实践笔记
    一些vim的插件和配置
    Web API工作方式
    计算机中的异常
    Glusterfs之nfs模块源码分析
    ASP.NET Windows身份认证
    Sql Server表结构及索引辅助查看工具
    sql server批量插入与更新两种解决方案
    如何在ViewModel中正确地使用Timer(定时器)
  • 原文地址:https://www.cnblogs.com/alighie/p/8298436.html
Copyright © 2011-2022 走看看