Abstract
In this paper, we discuss the design and implementation of a concurrency control manager for a main memory DBMS(MMDBMS). Since an MMDBMS, unlike a disk-based DBMS, performs all of data update or retrieval operations by accessing main memory only, the portion of the cost for concurrency control in the total cost for a data update or retrieval is fairly high. Thus, the development of an efficient concurrency control manager highly accelerates the performance of the entire system. Our concurrency control manager employs the 2-phase locking protocol, and has the following characteristics. First, it adapts the partition, an allocation unit of main memory, as a locking granule, and thus, effectively adjusts the trade-off between the system concurrency and locking cost through the analysis of applications. Second, it enjoys low locking costs by maintaining the lock information directly in the partition itself. Third, it provides the latch as a mechanism for physical consistency of system data. Our latch supports both of the shared and exclusive modes, and maximizes the CPU utilization by combining the Bakery algorithm and Unix semaphore facility. Fourth, for solving the deadlock problem, it periodically examines whether a system is in a deadlock state using lock waiting information. In addition, we discuss various issues arising in development such as mutual exclusion of a transaction table, mutual exclusion of indexes and system catalogs, and realtime application supports.
본 논문에서는 주기억장치 DBMS(main memory DBMS: MMDBMS)를 위한 동시성 제어 관리자의 설계 및 구현에 관하여 논의한다. MMDBMS는 디스크 기반 DBMS와는 달리 주기억장치 액세스만으로 데이터 검색 및 갱신을 수행하므로 전체 수행 비용 중 동시성 제어 관리자의 수행 비용이 차지하는 비중은 매우 크다. 따라서 효율적인 동시성 제어 관리자의 개발은 MMDBMS의 성능에 큰 영향을 미치게 된다. 본 연구에서 개발된 동시성 제어 관리자는 이단계 라킹 규약을 기반으로 하며, 다음과 같은 특징을 갖는다. 첫째, 락의 단위를 주기억장치의 물리적인 할당 단위인 파티션으로 설정함으로써 응용 분야의 특성 분석을 통하여 동시성과 락 관리 비용을 유연하게 조정할 수 있다. 둘째, 락에 관한 정보를 파티션 내부에서 직접 관리함으로써 락 관리 비용을 크게 줄일 수 있다. 셋째, 시스템 데이터의 물리적 일관성 유지를 위한 수단으로서 래치를 제공한다. 개발된 래치는 공유 모드와 배제 모드를 모두 지원하며, CPU 이용률의 극대화를 위하여 Bakery 알고리즘과 Unix의 세마포어 기능을 결합하는 방법을 사용한다. 넷째, 락에 의한 교착 상태의 해결을 위하여 락 대기 정보를 기반으로 시스템의 교착 상태 여부를 주기적으로 검출하는 기능을 제공한다. 본 논문에서는 트랜잭션 테이블의 상호배제, 인덱스 혹은 시스템 카탈로그의 상호 배제, 실시간 응용의 지원 등 실제 구현에서 발생하는 중요한 이슈들에 관해서도 이울러 논의한다.