동시성 제어 란 무엇입니까?
데이터 관리 프로그래밍에서 동시성 제어는 동시 작업으로 정확한 결과를 생성하도록 설계된 메커니즘입니다. 이러한 결과는 적시에 얻어야합니다. 동시성 제어는 사용자가 얻을 수있는 검색 가능한 정보 캐시가있는 데이터베이스에서 자주 볼 수 있습니다.
프로그래머는 공유 데이터에 대한 중요한 트랜잭션의 영향이 연속적으로 동일하도록 데이터베이스를 설계하려고합니다. 이것이 의미하는 것은 트랜잭션 세트와 접촉하는 데이터는 모든 트랜잭션이 순차적으로 그리고 특정 순서로 실행될 경우 결과를 얻을 수있는 특정 상태에있을 것입니다. 두 데이터가 동시에 수정되어 데이터가 유효하지 않은 경우가 있습니다.
상호 배제 사용 및 액세스 권한이있는 트랜잭션을 결정하는 리소스 생성을 포함하여 트랜잭션이 차례로 실행되도록하는 여러 가지 방법이 있습니다. 그러나 이것은 과도하며 프로그래머가 분산 시스템에서 동시성 제어의 이점을 얻지 못할 것입니다. 동시성 제어를 통해 여러 트랜잭션을 동시에 실행하면서 이러한 트랜잭션을 서로 멀리 유지함으로써 선형성을 보장 할 수 있습니다. 동시성 제어를 구현하는 한 가지 방법은 리소스를 공유하는 직렬 트랜잭션 실행을 위해 특정 리소스에 독점 잠금을 사용하는 것입니다. 트랜잭션은 사용하려는 객체를 잠그고, 다른 트랜잭션이 잠긴 객체를 요청하면 해당 트랜잭션은 객체가 잠금 해제 될 때까지 기다려야합니다.
분산 시스템에서이 방법을 구현하려면 잠금 관리자 (자원 잠금을 실행하는 서버)가 필요합니다. 이는 클라이언트가 특정 리소스에서 잠금을 해제하기 위해 잠금을 요청하고 메시지를 보낼 수있는 중앙화 된 상호 배제를위한 서버와 매우 유사합니다. 그러나 동시성 제어에는 직렬 실행 보존이 여전히 필요합니다. 두 개의 개별 트랜잭션이 유사한 객체 세트에 액세스하는 경우 결과는 유사해야하며 이러한 트랜잭션이 특정 순서로 실행 된 것처럼 유사해야합니다. 리소스에 대한 액세스 순서를 보장하기 위해 2 단계 잠금이 도입되었습니다. 즉, 별도의 잠금이 해제되면 트랜잭션에 새 잠금이 허용되지 않습니다.
동시성 제어를위한 2 단계 잠금에서 초기 단계는 트랜잭션이 필요한 잠금을 획득하는 성장 단계로 간주됩니다. 다음 단계는 축소 단계로 간주되며 트랜잭션에서 잠금이 해제됩니다. 이 유형의 잠금에는 문제가 있습니다. 트랜잭션이 중단되면 다른 트랜잭션은 중단 된 트랜잭션에 의해 수정 및 잠금 해제 된 오브젝트의 데이터를 사용할 수 있습니다. 이로 인해 다른 거래가 중단 될 수 있습니다.