zoukankan      html  css  js  c++  java
  • 浅谈select for update 和select lock in share mode的区别

    有些情况下为了保证数据逻辑的一致性,需要对SELECT的操作加锁。InnoDB存储引擎对于SELECT语句支持两种一致性的锁定读(locking read)操作。

    1SELECT …… FOR UPDATE
    
    2SELECT …… LOCK IN SHARE MODE

    其中,SELECT …… FOR UPDATE对读取的记录加一个锁,其他事务不能对已锁定的行加任何锁。而SELECT …… LOCK IN SHARE MODE也是对读取的记录加一个锁。 

    但是如果有另一个一致性非锁定读的操作来读取该行那么数据是不会阻塞的,读取的是改行的快照版本(也就是指改行之前的数据版本,也就会出现脏读,所以也称为非锁定读,因为不需要等待被访问行的锁的释放。非锁定读的方式极大提高了数据库的并发性。在InnoDB存储引擎中,这是默认的读取方式)     

    SELECT …… FOR UPDATE和SELECT …… LOCK IN SHARE MODE必须在一个事务中,当一个事务提交了,锁就释放了。因此在使用这两个SELECT锁定语句时,必须开启事务。

  • 相关阅读:
    PySpark SQL 相关知识介绍
    Spark的安装及配置
    Hive的安装及配置
    Hadoop分布式集群的搭建
    寻找子串
    CPU呈现正弦函数曲线
    2.2链表中倒数第k个结点
    #137 Single Number II
    1.8字符串- 翻转子串
    1.7数组-清除行列
  • 原文地址:https://www.cnblogs.com/phpper/p/7360875.html
Copyright © 2011-2022 走看看