mysql事务隔离的一点理解
前言 先介绍一下事务的概念 事务(Transaction) 就是数据库管理的一个逻辑单位,由一个有效的数据库操作序列构成。 事物ACID特性 原子性(Atomicity):事务作为一个整体被执行,要么全部成功执行,要么全部失败 一致性(Consistency):指的是逻辑上的一致性,即所有操作是符合现实当中的期望的 隔离性(Isolation):多个事务并发时,一个事务不应该影响其他事务的执行 持久性(Durability):被提交过的事务对数据库的修改应该永久保存在数据库中 通俗的理解,就是将一系列的数据库操作(增删改查)看做一个整体,要么所有操作都成功,要么都失败。 一、产生的问题 如果没有事务隔离的话,会发生以下的问题 1. 脏读 脏读 是指一个事务读取了另一个事务未提交的数据 2. 不可重复读 不可重复读 是指事务中多次读取,数据改变。 不可重复读和脏读的区别:不可重复读是事务A读取某行数据后,事务B插入了一行新数据并提交之后,事务A再去读数据,读到了修改后的数据集。 3. 幻读 幻读 是指事务多次读取,结果集数量改变。 上面还有点不清晰,借鉴一下别人的白话解释 幻读,并不是说两次读取获取的结果集不同,幻读侧重的方面是某一次的 select 操作得到的结果所表征的数据状态无法支撑后续的业务操作。更为具体一些:select 某记录是否存在,不存在,准备插入此记录,但执行