MySQL总结-事务

目录

目标

ACID

问题与解决方案


目标

对mysql的学习总结,我会从执行引擎、索引、sql、锁、MVCC、事务等几个部分进行阐述。本节阐述事务。

ACID

atom原子性 一组操作,全部执行成功,或全部执行失败。
consiitent一致性 事务前后的数据都必须遵循(索引和数据)约定或限制
isolation隔离性 在事务提交前,事务内部操作(结果)应该是其隐私,可选择外部的可见性。
durable持久性 只要事务提交成功,即使系统崩溃,也必须保证数据已被存储。

问题与解决方案

问题

脏读

针对某条记录,读取到了其它事务未提交的数据,且该数据准备回滚。

MySQL总结-事务_第1张图片

不可重复读

针对某条记录,事务B,在事务A更新记录的前后时间,分别读取数据,但两次数据不一致。

 

MySQL总结-事务_第2张图片

幻影读

事务B,在事务A更新数据操作前后,分别以当前读的方式查询到结果集,但是两次结果集不一致。

MySQL总结-事务_第3张图片

 

解决方案

选择合适的事务隔离级别

Read_Uncommited 读未提交 未解决上述问题
Read_Commited 读提交 解决脏读问题,允许不可重复读和幻影读
Repeatable_Read 可重复读

解决脏读和不可重复读问题,允许幻影读。

InnoDB默认隔离级别

Serializable 串行 解决上述问题

事务隔离级别直接影响事务操作的并发性,据具体业务情景进行选择,一般使用默认InnerDB的读提交就可以。

如何提高并发性

减小原子操作范围

 

 

 

你可能感兴趣的:(MySQL)