事务隔离级别
对于多个事务同时执行更改和查询操作时,设置隔离级别,可以微调性能与结果的可靠性、一致性和可复现性之间的平衡关系。
通过
transaction-isolation
参数,可更改默认级别。
如下是按时间顺序执行的两个事务的行为,在不同的隔离级别下,值 V1
、 V2
和 V3
是不同的。
读未提交
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;
。