zoukankan      html  css  js  c++  java
  • 14.5.2.3 Consistent Nonlocking Reads 一致性非锁定读

    14.5.2.3 Consistent Nonlocking Reads 一致性非锁定读
    
    
    一致性读意味着 InnoDB 使用多版本来实现一个查询数据库的快照在某个时间点。
    
    
    查看看到的事务做出的改变被提交了在那个时间点前, 随后没有改变或者没有提交的事务。
    
    
    这个例外是这个规则是查询看到的改变通过早期的语句在相同的事务里,
    
    这个列外导致下面的异常:
    
    
    如果事务隔离级别是REPEATABLE READ (the default level),所有一致性读在相同的事务 读取通过第一次这样的读在事务里创建的快
    
    照。
    你也可以得到一个更新鲜的快照对于你的查询通过提交当前的事务然后执行新的查询
    
    
    
    
    在 READ COMMITTED isolation level,  每个一致性读在一个事务里设置和读它自己的新鲜的快照
    
    
    一致性读是默认的模式 InnoDB 处理SELECT 语句在 READ COMMITTED and REPEATABLE READ isolation levels. 
    
    
    一个一致性读不设置任何锁在它访问的表上, 因此其他会话可以同时的修改那些表
    
    
    假设你运行模拟的事务隔离(RR) 当你执行一个一致性读(即,一个普通的SELECT 语句)
    
    InnoDB 给你的事务一个时间点 根据这个你看的查看看到的数据库
    
    如果其他的事务删除一个记录和提交在你的时间点被分配后,
    
    你不会看到已经被删除,插入和修改的记录
    
    
    注意:
    
    数据库的快照状态应用于SELECT 语句在一个事务里, 未必对于DML语句。
    
    
    如果你插入或者修改一些记录然后提交那个事务,一个DELETE 或者UPDATE语句从另外的并发RR事务被执行可能影响
    
    那些提交的行,即使session 不能查看他们。
    
    你可以提前你的时间点通过提交你的事务,然后做另外一个 SELECT or START TRANSACTION WITH CONSISTENT SNAPSHOT. 
    
    
    在下面的例子,Session A 看到SESSION B插入的记录只有当B已经提交了插入,而且A也提交了,
    
    
    如果你想看到数据库的最新状态,使用RC隔离级别或者锁定读
    
    
    在READ COMMITTED isolation level下,每个一致性读使用一个事务设置和读取它自己最新鲜的快照。
    
    
    一致性读 不支持某些DDL语句:
    
    1.一致性读不支持DROP table,因此MySQL 不能使用一个表已经被删除了
    
    2.
    

  • 相关阅读:
    练习1-17 编写一个程序,打印长度大于80个字符的所有输入行.
    练习1-16 修改打印最长文本行的程序的主程序main, 使之可以打印任意长度的输入行的长度, 并尽可能多的打印文本。
    惠普Z620工作站用安装版装win7旗舰版64位结果找不到硬盘
    输入元素( Input Element)
    GradientStop
    qml关键字style
    opacity
    QT5-step-by-step-LayoutManagement
    QT5-step-by-step-BasicKnowledge
    Adeneo Embedded: Building Qt 5.1 for Freescale i.MX6Introduction on LTIB
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350126.html
Copyright © 2011-2022 走看看