mysql 事务

1.事务的基本要素:

ACID

原子性(Automicity):事务开始后所有的操作要么全部做完,要么全部不做,出错回滚至事务开始前的状态。
一致性(Consistency):事务开始前后,数据库的完整性约束没有破坏。
隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同事务之间没有任何干扰
持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚

2.事务并发的问题:

脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读到的数据是脏数据
不可重复读:事务A多次读取同一数据,事务B在事务A读取的过程中,对数据进行了更新并提交,导致事务A多次读取的数据不一致
幻读:事务A对数据库所有数据做更新,事务B新增一条数据,事务A执行结束后,发现还有一条未更新

小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

3.快照读与当前读

可重复读的隔离级别使用MVCC机制select是快照读(历史版本,不加锁),insert update delete 是当前读(最新版本,特殊的读操作,插入/更新/删除操作,属于当前读,需要加锁。)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。