如何将MySQL中的InnoDB设置为快照隔离级别

use*_*858 4 mysql innodb snapshot-isolation

我正在开展一个学校项目,现在需要根据不同的隔离级别来描述MySQL的性能.我已经在READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ和SERIALIZABLE上测试了一些东西.现在我想使用快照隔离测试一些东西.

我理解当在InnoDB中使用REPEATABLE READ的默认值时,快照隔离是一起使用的,但我想知道,是否可以将隔离级别设置为仅隔离快照?我该怎么办?

ype*_*eᵀᴹ 5

没有全局快照隔离级别.来自MySQL文档,START TRANSACTION语法:

您也可以开始这样的交易:

START TRANSACTION WITH CONSISTENT SNAPSHOT;
Run Code Online (Sandbox Code Playgroud)

WITH CONSISTENT SNAPSHOT选项为具有该功能的存储引擎启动一致读取.这仅适用于InnoDB.效果与从任何InnoDB表发出a START TRANSACTION后跟a 相同SELECT.请参见第13.6.8.2"一致的非锁定读取".该WITH CONSISTENT SNAPSHOT选项不会更改当前事务隔离级别,因此仅当当前隔离级别允许一致读取(REPEATABLE READSERIALIZABLE)时,它才提供一致的快照.

因此,您必须使用上述语法将隔离级别设置为REPEATABLE READSERIALIZABLE启动事务.