什么是事务?
事务是一个独立的工作单元,里面的操作要不全部成功,要不全部失败。:
事务有什么特性?
- 原子性:操作要不全部成功,要不全部失败。
- 隔离性:多个并发事务之间相互隔离,互不干扰。或者说一个事务的操作对于另外一个事务是不可见的。
- 持久性:事务一旦完成,对数据的变更是永久的,不能回滚。
- 一致性:数据的状态必须从一个正确的状态变到另外一个正确的状态,必须符合数据库定义的规则。
MySQL中事务的特性分别是怎么实现的?
- 原子性:通过undo log实现的。
- 持久性:通过redo log和double write buffer(双写缓冲)实现的。
- 隔离性:通过锁或者MVCC实现的。
- 一致性:由原子性、持久性、隔离性共同实现的。
数据库什么时候会出现事务?
- 增删改会自动开启事务
- 手动开启事务:begin和start transaction
事务怎么结束?
roll back和commit
事务并发会带来什么问题?
- 脏读:一个事务读到了另外一个事务未提交的数据。
- 不可重复读:一个事务读取到了其他事务已提交的数据导致前后两次读取的数据不一致。
- 幻读:一个数据读取到了其他事务