zoukankan      html  css  js  c++  java
  • 数据库四大特性与隔离级别

    数据库四大特性ACID
    Atomicity (原子性) :事务(transaction)是由指逻辑上对数据的的一组操作,这组操作要么一次全部成功,如果这组操作全部失败,是不可分割的一个工作单位。
    Consistency(一致性) :在事务开始以前,被操作的数据的完整性处于一致性的状态,事务结束后,被操作的数据的完整性也必须处于一致性状态。
    Isolation(隔离性) :事务隔离性要求系统必须保证事务不受其他并发执行的事务的影响
    Durability(持久性): 一个事务一旦成功提交,它对数据库的改变必须是永久的,即便是数据库发生故障也应该不会对其产生任何影响。


    并发事务中可能产生的问题
    脏读
    两个事务并发执行,一个事务处理过程中读取了另一个未提交的事务中的数据
    不可重复读
    两个事务并发执行,一个事务范围内多次查询返回了不同的数据值,由于在查询间隔,被另一个事务修改并提交了数据。不可重复读和脏读的区别是:脏读是某一事务事务范围内,在该事务的某次查询中读取了另一事务未提交的脏数据,而不可重复读是某一事务范围内,该事务第二次读取数据,另一事务改变并提交了数据,导致该事务第二次读取的数据不同于第一次读取的数据。
    虚读(幻读)
    两个事务并发执行,一个事务对符合某一特征的一批数据进行修改,另一事务此时插入了一条新的符合特征的数据,当进行修改的事务完成后再查看数据会发现有一条数据没有被修改,此为幻读。
    幻读和不可重复读都是读取了另一个已提交的事务(与脏读不同),不同的是不可重复读查询的是同一个数据项,而幻读针对的是一批数据整体。


    mysql四个隔离级别
    Read uncommitted (读未提交)
    一个事务可以读取另一个事务未提交的数据,会导致脏读的发生。
    Read committed (读已提交)
    若有事务对数据对数据进行更新操作,读操作要等待更新事务提交后才能读取数据,可以解决脏读,无法解决不可重复读。
    Repeatable read (可重复读)
    某一事务在进行读操作时,不允许其他事务进行修改操作。此时不允许修改操作,但是可能会有插入操作,即可能会有幻读的情况。
    Serializable(序列化)
    最高的事务隔离级别,在该级别下事务串行化执行,有效避免脏读,不可重复读,幻读,但是对数据库性能影响比较大。

  • 相关阅读:
    第七周学习进度
    环形数组求子数组最大和
    第六周学习进度
    团队
    子数组和最大值
    第五周学习进度
    第四周学习进度
    构建之法第一篇阅读笔记
    关于Sublime text 的PHP编译环境配置的问题
    PHP基础之 数组(二)
  • 原文地址:https://www.cnblogs.com/helloz/p/8024880.html
Copyright © 2011-2022 走看看