zoukankan      html  css  js  c++  java
  • 事务的基本特性和隔离级别

    事务的基本特性ACID分别是:
    原子性指的是一个事务中的操作要么都成功,要么都失败。
    一致性指的是数据库总是从一个一致性状态转移到另外一个一致性状态。比如A转账给B100块钱,假设A只有90块,支付之间我们数据库里面的数据都是符合约束的,但是如果事务执行成功了,我们的数据库数据就破坏了约束,因此事务不能成功,这里我们说事务提供了一致性的保证。
    隔离性指的是一个事务的修改在最终提交之间,对其他事务是不可见的
    持久性指的是一旦事务提交,所作的修改就会永远保存在数据库中

    隔离性有四个隔离级别,分别是:

    • read uncommit 读未提交,可能会读到其他事务未提交的数据,也叫做脏读。

    用户本来应该读取到id=1的用户age应该是10,结果读取到了其他事务还没有提交的事务,读取结果age=20,这就是脏读

    • read commit 读已提交,两次读取结果不一致,也叫做不可重复度

    读已提交解决了脏读问题,他只会读取已经提交的事务
    用户A开启事务读取id=1用户,查询到age=10,再次读取发现结果=20,在同一个事务里面查询到不同的结果叫做不可重复读。

    • repeatable read 可重复读,这是mysql的默认级别,就是每次读取结果都一样,但是有可能产生幻读。
    • serializable 串行化,一般不会使用,他会给每一行读取的数据加锁,会导致大量超时和锁竞争的问题。
  • 相关阅读:
    看完两本书
    今夜,有点难过
    学习总结
    杂谈改变个人习惯
    最近一个月的工作学习总结
    lab项目之一阿森纳赛事指南客户端版本
    工资类程序数据库处理讨论 [数据加载(二)]
    SQL数值倍率实现问题....
    想用GDI+2.0做设计器,但在实现过程中遇到大麻烦
    这几天做工资类程序郁闷了,想写点东西理一下思路
  • 原文地址:https://www.cnblogs.com/liuzhidao/p/14798991.html
Copyright © 2011-2022 走看看