>  기사  >  백엔드 개발  >  PHP 비관적 잠금과 낙관적 잠금의 차이점은 무엇입니까?

PHP 비관적 잠금과 낙관적 잠금의 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2019-10-10 16:12:582994검색

PHP 비관적 잠금과 낙관적 잠금의 차이점은 무엇입니까?

비관적 잠금

이름 그대로 매우 비관적입니다. 데이터 얻으러 갈 때마다 남들이 수정할 것 같아서 데이터 얻을 때마다 잠그고 있는데, 다른 사람들이 이 데이터 검색이 잠금을 얻을 때까지 차단될 것이라고 생각하지 않도록 합니다.

행 잠금, 테이블 잠금, 읽기 잠금, 쓰기 잠금 등과 같은 많은 잠금 메커니즘이 기존 관계형 데이터베이스에서 사용되며 작업 전에 모두 잠깁니다. 이는 외부 세계에 의해 수정되는 데이터(시스템의 다른 현재 트랜잭션 및 외부 시스템에서 처리되는 트랜잭션 포함)에 대해 보수적인 태도를 의미합니다. 따라서 전체 데이터 처리 과정에서 데이터는 잠금 상태로 유지됩니다.

비관적 잠금의 구현은 종종 데이터베이스에서 제공하는 잠금 메커니즘에 의존합니다(데이터베이스 계층에서 제공하는 잠금 메커니즘만이 데이터 액세스의 배타성을 실제로 보장할 수 있습니다. 그렇지 않으면 이 시스템에 잠금 메커니즘이 구현되더라도 외부 시스템의 데이터가 수정되지 않을 것이라는 보장은 없습니다.)

Optimistic Lock

이름에서 알 수 있듯이 매우 낙관적입니다. 데이터를 얻으러 갈 때마다 다른 사람이 수정하지 않을 것이라고 생각하므로 잠그지 않을 것입니다. 이 기간 동안 다른 사람이 이 데이터를 업데이트했는지 여부를 판단하여 버전 번호와 같은 메커니즘을 사용할 수 있습니다.

낙관적 잠금은 다중 읽기 애플리케이션 유형에 적합하며, 이는 처리량을 향상시킬 수 있습니다. 데이터베이스가 write_condition과 유사한 메커니즘을 제공하는 경우 실제로는 낙관적 잠금을 제공합니다.

요약

두 잠금 모두 장점과 단점이 있습니다. 하나의 잠금이 다른 잠금보다 낫다고 생각할 수는 없습니다. 즉, 충돌이 거의 발생하지 않는 상황에는 낙관적 잠금이 적합합니다. 이는 잠금 비용을 없애고 시스템의 전체 처리량을 증가시킵니다. 그러나 충돌이 자주 발생하면 상위 계층 응용 프로그램이 계속 재시도하게 되어 실제로 성능이 저하되므로 이 경우에는 비관적 잠금이 더 적합합니다.

PHP 관련 지식을 더 알고 싶으시면 PHP 중국어 웹사이트를 방문하세요!

위 내용은 PHP 비관적 잠금과 낙관적 잠금의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.