vlambda博客
学习文章列表

mysql的四种事务隔离级别

一、事务的4个基本属性

  • 1、原子性:Atomicity 事务开始后要么全部成功,要么全部失败。

  • 2、一致性:Consistency,事务开始前和结束后,数据库的完整性约束没有被破坏。比如A向B转账,不可能A扣了钱,B却没收到。

  • 3、隔离性:Isolation 同一时间,同一数据只允许一个事务操作,不同事务间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

  • 4、持久性:Durability 事务完成后,事务对数据库的操作是永久性的。结束就彻底结束不能反悔了。

二、事务的并发可能引起的3个问题

  • 1、脏读:读到其他事务回滚的数据。(事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

  • 2、不可重复读:在一个事务中,多次读取同一数据,结果却不一样。一个事务多次读同一数据的间隙,另外的事务对数据做了修改,导致读取结果不一致。

  • 3、幻读:一个事务修改全表数据的时候,这时另一个事务添加了一条数据。导致第一个事务用户发现数据少改了一条,产生幻觉一样。

三、mysql事务的4个隔离级别

事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)