MySQL 교착 상태는 두 개 이상의 트랜잭션이 동일한 리소스에서 서로를 점유하고 서로가 점유한 리소스를 잠그도록 요청하여 악순환이 발생하는 것을 의미합니다. InnoDB 스토리지 엔진은 교착 상태 순환 종속성을 감지하고 즉시 오류를 반환할 수 있습니다. 교착 상태는 트랜잭션 중 하나를 부분적으로 또는 완전히 롤백해야만 해결할 수 있습니다.
교착상태란 무엇인가요? 어떻게 생겼습니까?
두 개 이상의 트랜잭션이 동일한 리소스에서 서로를 점유하고 서로가 점유한 리소스에 대한 잠금을 요청하여 악순환이 발생하는 것을 말합니다.
(권장 튜토리얼: mysql 튜토리얼)
트랜잭션이 다른 순서로 리소스를 잠그려고 하면 교착 상태가 발생할 수 있습니다. 여러 트랜잭션이 동시에 동일한 리소스를 잠그는 경우에도 교착 상태가 발생할 수 있습니다.
잠금의 동작과 순서는 스토리지 엔진과 관련이 있습니다. 동일한 순서로 명령문을 실행하면 일부 스토리지 엔진은 교착 상태에 빠지고 일부는 그렇지 않습니다. 교착 상태의 원인은 두 가지입니다. 실제 데이터 충돌과 스토리지 엔진 구현 방식입니다.
교착 상태 감지
데이터베이스 시스템은 다양한 교착 상태 감지 및 교착 상태 시간 초과 메커니즘을 구현합니다. InnoDB 스토리지 엔진은 교착 상태 순환 종속성을 감지하고 즉시 오류를 반환할 수 있습니다.
교착 상태 복구
교착 상태가 발생한 후 트랜잭션 중 하나를 부분적으로 또는 완전히 롤백해야만 교착 상태를 해결할 수 있습니다.
InnoDB는 현재 최소 행 수준 배타적 잠금을 보유한 트랜잭션을 롤백하여 교착 상태를 처리합니다. 따라서 트랜잭션 애플리케이션을 설계할 때 교착 상태를 어떻게 처리할지 고려해야 합니다. 대부분의 경우 교착 상태로 인해 롤백된 트랜잭션만 다시 실행하면 됩니다.
위 내용은 mysql 교착 상태는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!