什么叫事务
事务就是一组 sql 组成的操作单元, 要么操作全部成功, 要么全部失败
ACID 属性
原子性 (atomicity)
一个事物必须被视为一个不可分割的最小工作单元, 整个事务要么全部成功, 要么全部失败回滚, 对一个事物来说, 不可能只执行其中的一部分操作
一致性 (consistency)
数据库总是从一个一致的状态转换到另外一个一致的状态比如总共两个 update, 在第一个 update 后, 系统崩溃了, 也不会对数据有影响, 因为事务没提交
隔离性 (isolation)
一个事务所做的修改在最终提交以前, 对其他事务是不可见
持久性 (durability)
一旦事务提交, 则所做的修改就会永久保存到数据库中
事务隔离级别
并发事务带来的问题:
脏读
事务可以读取未提交的数据, 叫脏读
不可重复读
一个事务开始时, 只能读取已经提交事务所做的修改换句话说, 一个事务从开始直到提交之前, 所做的任何修改对其他事务都是不可见的执行两次同样的查询, 可能会得到不一样的结果
幻读
是指当某个事务读取某个范围内的记录时, 另外一个事务在该范围内插入了新的记录, 当之前的事务再次读取该范围的记录时, 会产生幻行
隔离级别 | 脏读可能性 | 不可重复读可能性 | 幻读可能性 |
---|---|---|---|
read uncommitted | Yes | Yes | No |
read committed | No | Yes | Yes |
repeatable read | No | No | Yes |
serializable | No | No | No |
来源: http://www.bubuko.com/infodetail-2510417.html