mySQL-使用PHP设置隔离级别';s mysqli

mySQL-使用PHP设置隔离级别';s mysqli,php,mysql,transactions,innodb,isolation-level,Php,Mysql,Transactions,Innodb,Isolation Level,如何使用mysqli在PHP中将事务的隔离级别设置为“可序列化”?我到处找了,找不到任何有关它的信息 是对隔离级别的解释。您可以在运行语句之前在查询中设置隔离级别。这假设您使用同一个会话执行所有操作: $mysqli = new mysqli('localhost', 'user', 'pass', 'db'); $mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE"); ... 您可能还想在手前关机,因

如何使用mysqli在PHP中将事务的隔离级别设置为“可序列化”?我到处找了,找不到任何有关它的信息


是对隔离级别的解释。

您可以在运行语句之前在查询中设置隔离级别。这假设您使用同一个会话执行所有操作:

$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
...
您可能还想在手前关机,因为它会改变方式。

简短回答:

$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
详细回答:除非使用会话全局修饰符,否则设置事务级别将仅适用于下一个查询

tldr

根据MySQL和InnoDB表:

没有任何会话或全局关键字:

该语句仅适用于执行的下一个单个事务 在会议期间

后续事务将恢复为使用指定事务的会话值 特点

交易中不允许使用该声明


请注意,设置
GLOBAL
标志将影响所有后续查询,现有会话将不受影响。

是否有更多关于“您可能还想先关闭自动提交,因为它会改变可序列化隔离的工作方式”的信息。注释?