1什么是事务:
简单说就是把多条数据库操作捆绑到一起执行,要么都成功,要么都失败。
2事务的原则ACID:
- 原子性:事务包含的所有操作,要么全部成功,要么全部失败回滚,成功全部应用到数据库,失败不能对数据库有任何影响;
- 一致性:事务在执行前和执行后必须一致;例如A和B一共有100块钱,无论A、B之间如何转账,他们的钱始终相加都是100;
- 隔离性:多用户并发访问同一张表时,数据库为每一个用户开启新的事务,该事务不能被其他事务所影响,相互有隔离;
- 持久性:一个事务一旦提交,则对数据库中数据的改变是永久的,即便系统故障也不会丢失;
3 并发可能引起的问题:
- 脏读:一个事务读取到另一个事务未提交的数据;
- 不可重复读:一个事务读取到另一个事务已提交(Update操作)的数据,导致前后读取不一致;
- 幻读(虚读):一个事务中读取到别的事务插入(Insert操作)的数据,导致前后读取不一致;
4 事务的隔离级别:
- Serializable串行化:可避免脏读、不可重复读和幻读;
- Repeatable read可重复读:可避免脏读、不可重复读;(MySql默认值)
- Read committed读已提交:可避免脏读;
- Read uncommitted读未提交:任何情况都无法保证;
网友评论