MySQL- PHP의 MySQLI를 사용하여 격리 레벨을 설정합니다
-
20-09-2019 - |
문제
MySQLI를 사용하여 PHP에서 트랜잭션의 격리 수준을 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
깃발은 모두에게 영향을 미칩니다 후속 쿼리 기존 세션은 영향을받지 않습니다.
제휴하지 않습니다 StackOverflow