Abstract
In a multiple-server DBMS using the share-disk model, when a server process updates data, the updated ones are not immediately reflected to the buffers of the other server processes. Thus, the other server processes may read invalid data. In this paper, we propose a novel method to solve this problem. In this method the server process stores the identifiers and timestamps of the pages that have been updated during a transaction into the coherency volume when the transaction commits. Then, the server process invalidates its buffers of the pages updated by the other server processes by accessing the coherency volume when the lock is acquired, and, subsequently, read the up-to-date versions of the pages from disk. This method needs only a very small coherency volume and shows a good performance because the amount of data that need to be accessed is very small.
공유디스크 모델을 사용하는 다중 서버 DBMS에서는 서버 프로세스들이 서로 독립된 메모리를 가지므로, 특정 서버 프로세스가 데이터베이스를 수정하더라도 다른 서버 프로세스들의 버퍼에는 수정된 내용이 반영되지 않는다. 따라서, 다른 서버 프로세스들이 수정되기 전 내용에 대하여 데이터 처리 요청을 수행하면 문제가 발생한다. 본 논문에서는 큰 단위의 로크(여기서는 볼륨 로크)를 사용하는 DBMS에서 이러한 문제를 해결하기 위한 새로운 방법을 제안한다. 이 방법에서는 서버 프로세스가 트랜잭션을 커밋할 때 수정한 페이지의 식별자와 타임스탬프를 일관성 볼륨에 저장하고, 이 정보를 통하여 다른 서버 프로세스가 로크를 획득하는 시점에 일관성 볼륨에서 다른 프로세스가 먼저 수정하였는지 여부를 확인하여 해당 페이지를 버퍼에서 무효화시켜 디스크에서 최신의 버전을 새로 읽어 들인다. 이 방법은 매우 작은 크기의 일관성 볼륨만을 사용하고, 액세스하는 데이터의 양이 적어서 성능이 매우 빠르다.