• mysql的innodb存储引擎事务隔离级别


    innodb存储引擎支持数据库事务,事务有四大特性ACID:
    原子性 Atomicity
    一致性 Consistency
    持久性 Durability
    隔离性 isolation

    mysql事务隔离表
      隔离级别 脏读 不可重复读 幻读
    1 Read uncommitted    未提交读 可能 可能 可能
    2 Read committed    已提交读 —— 可能 可能
    3 Repeatable read   可重复读 —— ——

    ——
    在mysql中已基本解决幻读问题。

    幻读是怎么解决的?在快照下面,是用MVCC解决的,在LBCC(Locked Base Concurrency Control)锁定读或当前读的情况下,是用间隙锁gap锁来解决的。

    4 Serializable      可序列化 —— —— ——

    事务隔离级别:
    1) Read uncommitted 未提交读。脏读。事务2读到事务1已更改但未提交的数据
    2) Read committed 读已提交。可重复读。事务2要等事务1提交后才能读取数据。 同一个线程在一个事务过程中相同查询SQL,前后返回了其他线程事务提交前和提交后两种不同的值
    3) Repeatable read 可重复读。

    4) Serializable 可序列化。 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。

    备注:在mysql中,不可重复读 和 幻读 在 “Read uncommitted” 和 “Read committed” 两种隔离级别中都可能出现。

    【不可重复读】

    当事务内相同的记录被检索两次,且两次得到的结果不同时,此现象为不可重复读。

    【Phantom reading 幻读】

    幻读是读取到了之前没有读取到的记录。幻读对应的问题是insert操作,而不是update操作。 对于delete操作,SQL92标准里视为幻读,但在mysql官方认为它不是幻读,认为是发生了被删除记录的不可重复读。 

    show variables like 'transaction_isolation';     执行该SQL可获得mysql的默认事务级别: REPEATABLE-READ

    参考 《理解事务的4种隔离级别

    end.

    支付宝扫一扫,为女程序员打赏!
    作者:梦幻朵颜
    版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    程序数据集算地数据库
    使用属性升级mybank
    第一个C#程序
    CSS3动画
    定位网页元素的解析
    CSS3中的浮动
    CSS中的盒子模型
    (十三)mybatis 整合 ehcache
    (十二)mybatis 查询缓存
    (十一)延迟加载
  • 原文地址:https://www.cnblogs.com/zhuwenjoyce/p/14854779.html
Copyright © 2020-2023  润新知