软件外包属于什么行业seo关键词排名网络公司
事务(Transaction)
ACID原则
- 原子性(Atomicity)
针对同一个事务,要么都成功,要么都失败 - 一致性(Consistency)
一个事务操作前和操作后数据状态一致 - 隔离性(Isolation)
有多个操作时,保证本事务不会受其他事务操作的影响 - 持久性(Durability)
事务结束后不会因为外部原因导致数据丢失,事务一旦提交,则不可逆
相关概念说明
脏读(读未提交)
一个事务读取了另一个事务未提交的数据,而该数据可能发生回滚,这就有可能会导致读不到最终存在数据库的数据
幻读(虚读)
在一个事务内读取到别的事务插入的数据导致前后不一致
不可重复读
在一个事务内多次读取记录,读取结果不同,不一定是错误。例如,读取过程中,又有人转账进来,并且已提交事务,此时前后读取结果会有差异。
可重复读
事务从开始到结束读的数据都相同
-
mysql是默认开启事务自动提交的
-
手动开启事务提交
set autocommit = 0 --关闭默认提交
- 开启事务
start transaction; --从这之后的sql都在同一个事务内
-
提交——持久化
commit
-
回滚——恢复到原先状态
rollback
-
事务结束
set autocommit = 1 --开启默认提交
事务隔离级别
隔离级别 | 脏读 | 幻读 | 不可重复读 |
---|---|---|---|
读未提交 | √ | √ | √ |
读提交 | × | √ | √ |
可重复读(默认) | × | √ | × |
串行化 | × | × | × |
隔离强度从弱到强,但性能也随之降低
详细原理讲解请看这里
里面提到的MyISAM引擎从5.6版本也开始支持事务了哦~