MariaDB 서버에 nodejs 웹 서비스가 있고 내 앱에 약 500 명의 일일 활성 사용자가 있습니다. 가 삽입되지 중복 행 초래한다MariaDB REPEATABLE READ 트랜잭션을 사용하는 경우에도 여러 개의 동일한 행이 있습니다.
START TRANSACTION
-- select to find out the existence of a row --
-- if the row doesn't exist, a new row inserted --
COMMIT
이 거래하지만, 그렇지 않습니다 : 내 코드에서
, 나는 다음과 같이 트랜잭션을 사용합니다.
다른 세션이있는 2 개의 요청이 동시에 도착하여 행이 존재하지 않는다는 사실을 알게되면 두 세션 모두이를 삽입한다고 생각합니다.
MariaDB 트랜잭션 격리 수준은 REPEATABLE-READ입니다.
REPEATABLE READ 격리 수준 때문입니까?
다른 세션에서 동일한 행을 읽을 수있을 때 독점적으로 읽기 및 쓰기를 잠그는 방법은 무엇입니까?
INSERT IGNORE ...;
INSERT ... ON DUPLICATE KEY UPDATE ...;
가 무엇이 잘못되었는지 설명하기 위해 :