事务

事务隔离级别

对于多个事务同时执行更改和查询操作时,设置隔离级别,可以微调性能与结果的可靠性、一致性和可复现性之间的平衡关系。

通过 transaction-isolation 参数,可更改默认级别。

如下是按时间顺序执行的两个事务的行为,在不同的隔离级别下,值 V1V2V3 是不同的。

读未提交

Read Uncommitted,即可以读到其他事务已修改但未提交的数据。在此隔离级别下, V1 = 2; V2 = 2; V3 = 2;

读已提交

Read Committed,在此隔离级别下, V1 = 1; V2 = 2; V3 = 2;

可重复读

Repeatable Read,InnoDB的默认隔离级别。在此隔离级别下, V1 = 1; V2 = 1; V3 = 2;

串行化

Serializable,写操作会加写锁,读操作会加读锁。出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成。在此隔离级别下, V1 = 1; V2 = 1; V3 = 2;