집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 낙관적 잠금을 어떻게 구현할 수 있습니까?
낙관적 잠금은 여러 사용자가 동일한 데이터를 동시에 업데이트하는 것을 방지하기 위해 동시성 제어에 사용되는 방식입니다. 충돌이 발생할 것이라고 가정하고 트랜잭션 시작 시 데이터를 잠그는 비관적 잠금과 달리 낙관적 잠금은 충돌이 거의 없다고 가정하고 잠금 없이 업데이트를 허용합니다.
MySQL은 낙관적 잠금을 기본적으로 구현하지 않습니다. 그러나 표준 SQL 지침과 버전 열 접근 방식을 사용하여 구현할 수 있습니다.
<code class="sql">CREATE TABLE theTable ( id INT NOT NULL AUTO_INCREMENT, val1 INT NOT NULL, val2 INT NOT NULL, version INT NOT NULL DEFAULT 0 );</code>
낙관적 잠금 쿼리:
<code class="sql">UPDATE theTable SET val1 = @newVal1, val2 = @newVal2, version = version + 1 WHERE id = @id AND version = @oldVersion;</code>
충돌 확인 :
업데이트 후 AffectedRows 값이 확인됩니다.
트랜잭션 격리 수준은 낙관적 잠금에서 역할을 합니다. READ_COMMITTED 격리 수준에서는 다른 프로세스가 커밋되지 않은 업데이트를 읽을 수 없으므로 충돌 발생을 방지합니다.
낙관적 잠금은 업데이트가 자주 발생하지 않고 충돌 가능성이 낮은 상황에 적합합니다. 짧은 사용자 세션으로 인해 동시 업데이트 가능성이 줄어드는 웹 애플리케이션에서 자주 사용됩니다.
위 내용은 MySQL에서 낙관적 잠금을 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!