一 . 四大特性
原子性
事务中的所有操作要么全失败要么全成功,失败了进行回滚,不会对数据库数据改变。
一致性
事务中的所有操作执行之前和执行之后对数据的改变结果必须是一致的。
比如A B两个人账户转钱,总共5000元,A减少了1000,B就得增加1000.
持久性
事务中的所有操作对数据进行改变,只要提交成功,就会对数据进行永久改变,断电或者故障也不会改变。
隔离性
事务之间的操作是互相不影响的,不同的隔离级别隔离程度也不一样。
二 . 隔离级别
读未提交:
不能避免 : 脏读,不可重复读,幻读
读已提交:
可避免 : 脏读
不可避免 : 不可重复读,幻读
可重复读:
可避免 : 脏读 ,不可重复读
不可避免 : 幻读
串行化:
可避免:脏读 , 不可重复读,幻读
三 . 脏读 不可重复 幻读介绍
脏读:
A 事务没有提交的操作被 B 事务读取
不可重复读:
A事务读去一个条数据两次,第一次读取完之后,这条数据被B事务更改并提交,
A事务再次读取这条数据时候发现数据和第一次不一样。
幻读
A事务执行一条sql进行读取或者插入,读取到N条或者插入成功,
这时候B事务插入一条数据,导致A事务再次读取不是N条或者插入失败(提示主键重复等)。
四 .补充
mysql默认隔离级别是 可重复读
Oracle默认隔离级别是 读已提交