Commercial database management systems(DBMSs) support several isolation levels allowing users to trade off consistency for a potential gain in performance.
Each isolation level is typically defined by the anomalies permitted in the level such as dirty write, dirty read, and unrepeatable read. In locking-based database management systems, the level is also defined by the locking protocol. In practice, many transactions execute at isolation level 2 permitting unrepeatable read, rather than executing at isolation level 3, which does not permit any anomalies mentioned above. Cursor stability, a variant of isolation level 2, has been widely used in relational DBMSs (RDBMSs) as a useful technique for obtaining concurrency achievable at level 2 without much sacrificing the consistency.
Recently, most commercial RDBMSs have been evolving into object-relational DBMSs(ORDBMSs) providing object-oriented concepts. These ORDBMSs support complex applications such as navigational applications efficiently. We address three problems in supporting isolation levels for navigational applications in ORDBMSs. First, cursor stability is much less usable in ORDBMSs because navigational applications in such DBMSs can suffer from critical inconsistency problems: dangling pointers, lost updates, and reading inconsistent complex objects. Hence, ORDBMSs need a new isolation level in place of cursor stability to avoid degradation of concurrency at level 3. Second, cursor stability has been defined only by the locking protocol while other levels have been defined by anomalies as well. Thus, cursor stability is not semantically clear and cannot be applied to DBMSs that do not use locking protocols for concurrency control. Third, in general, transactions violate consistency of the database at levels lower than level 3. We investigate conditions that restrict the class of transactions that preserve database consistency even when running at these levels.
In this dissertation, we propose a new isolation level, navigation stability, that prevents inconsistency problems of cursor stability in navigational applications and, at same time, avoids significant degradation of concurrency that occurs at level 3.
First, we analyze the inconsistency problems of cursor stability in navigational applications. Second, we analyze the access patterns of navigational applications and then, based on this analysis, define navigation stability as an extension of cursor stability. Third, we show that navigation stability solves the inconsistency problems of cursor stability in ORDBMSs. Fourth, we discuss on the implementability of the proposed level in ORDBMSs. Through extensive simulation, we show that navigation stability enhances the performance significantly compared with that of level 3. For workloads consisting of transactions of long duration, the throughput of navigation stability is enhanced by up to 200% compared with that of level 3; the average response time reduced by as much as 55%; the abort ratio reduced by as much as 77%.
Next, in this dissertation, we define cursor stability and navigation stability by anomalies. To do this, we refine unrepeatable read, the anomaly that differentiates level 2 from level 3, by classifying it according to the access pattern of the transactions. By defining the two levels by anomalies, we can apply these levels with clear semantics to DBMSs that do not use locking protocols for concurrency control.
Last, by extending the conditions identified for level 2 in the literature, we present the conditions to satisfy to preserve consistency of the database at navigation stability. By restricting transactions executing at navigation stability to satisfy these conditions, we can enhance concurrency without sacrificing consistency.
Overall, we conclude that navigation stability is a useful isolation level that can be used in place of isolation level 3 in ORDBMSs to improve the performance and concurrency without significantly sacrificing consistency.
고립화 수준은 트랜잭션이 수행될 때 어느 정도 일관성을 희생해서라도 동시성을 높이는 방법으로, 상용 DBMS에서는 여러 가지 고립화 수준들을 제공하고 있다. 고립화 수준의 각 수준은 오손 쓰기, 오손 읽기, 반복 불가능 읽기의 이상 현상의 허용여부에 의해 주로 정의되며, 로킹을 사용하는 DBMS에서는 로킹 규약에 의해서도 정의된다. 실제로, 트랜잭션은 성능향상을 위하여 세 가지 이상 현상을 모두 허용하지 않는 고립화 수준 3 대신, 반복 불가능 읽기를 허용하는 고립화 수준 2에서 흔히 수행된다. 특히, 고립화 수준 2의 변형인 커서 안정성은 관계형 DBMS에서 일관성을 거의 희생하지 않으면서도 수준 2에 가까운 동시성을 얻을 수 있는 유용한 고립화 수준으로 사용되어 왔다.
최근 대부분의 관계형 DBMS는 여러 가지 객체 지향 개념들을 추가하여 확장한 객체 관계형 DBMS\,(object relational DBMS: ORDBMS)로 발전하고 있다. 이들 ORDBMS는 탐색항해 응용과 같은 복잡한 응용을 효율적으로 지원한다. ORDBMS의 탐색항해 응용에 대해서 고립화 수준을 적용할 때는 다음과 같은 세 가지 문제가 발생한다. 첫째, ORDBMS의 탐색항해 응용이 커서 안정성에서 수행될 때 허상 포인터 문제, 갱신 분실 문제, 그리고 복합객체를 스큐되어 읽는 문제와 같은 심각한 일관성 문제가 발생하기 때문에, 커서 안정성은 ORDBMS에서 더 이상 크게 유용한 수준이 되지 못한다. 따라서, ORDBMS에서는 수준 3의 동시성 저하를 피하기 위해서 커서 안정성의 일관성 문제를 해결하는 새로운 고립화 수준이 필요하다. 둘째, 고립화 수준은 일반적으로 이상 현상에 의해 정의되지만, 커서 안정성은 로킹 규약에 의해서만 정의되었을 뿐, 이상 현상에 의해서는 정의된 바가 없다. 따라서, 커서 안정성은 다른 수준들에 비해서 이해하기가 어렵고, 로킹을 사용하지 않는 DBMS에는 적용할 수 없다. 세째, 수준 3을 제외한 다른 수준에서는 일반적으로 데이터베이스의 일관성을 유지하지 못한다. 이들 수준에서도 일관성을 유지하기 위해서 이들 수준에서 수행할 트랜잭션을 제한하는 조건이 요구된다.
본 논문에서는 먼저 ORDBMS에서 수준 3의 동시성 저하를 피하는 동시에 커서 안정성의 일관성 문제를 해결하는 새로운 고립화 수준인 탐색항해 안정성 navigation stability을 제안한다. 우선, 탐색항해 응용을 커서 안정성에서 수행할 때 발생하는 일관성 문제를 분석한다. 다음으로, 탐색항해 응용의 액세스 패턴을 분석하고 이를 기반으로 커서 안정성을 확장하여 탐색항해 안정성을 정의한다. 그리고, 탐색항해 안정성이 ORDBMS의 탐색항해 응용에 대한 커서 안정성의 일관성 문제를 일으키지 않음을 증명한다. 다음으로, 제안한 수준을 ORDBMS에 구현하는 방법을 제시한다. 또한, 성능 평가를 통해 탐색항해 안정성의 성능이 수준 3에 비해 크게 우수함을 보인다. 실험 결과, 수행 시간이 긴 트랜잭션의 경우에 탐색항해 안정성은 수준 3에 비해 성능을 최대 200%까지 향상시키고, 평균 응답 시간을 최대 55% 줄이며, 트랜잭션의 철회율을 최대 77% 줄이는 것으로 나타났다.
다음으로, 커서 안정성과 탐색항해 안정성을 이상 현상에 의해서 정의한다. 이를 위해서, 수준 3과 수준 2를 구분하는 이상 현상인 반복 불가능 읽기를 액세스 패턴에 의해 세분화하여 정의한다. 두 수준을 이상 현상으로 정의함으로써 로킹을 사용하지 않는 DBMS에서도 명확한 의미를 가지고 이들 수준을 적용할 수 있게 되었다.
마지막으로, 수준 2에서 데이터베이스의 일관성을 유지하는 조건을 제시한 문헌에서의 기존 연구 결과를 확장하여 탐색항해 안정성에서 데이타베이스의 일관성을 유지하기 위한 새로운 조건을 제시한다. 사용자는 이러한 조건이 만족하도록 탐색항해 안정성에서 수행하는 트랜잭션을 제한함으로써 일관성을 전혀 희생하지 않고도 동시성을 높일 수 있다.
이러한 결과로부터, 탐색항해 안정성은 ORDBMS에서 일관성을 많이 희생하지 않고도 성능 및 동시성의 향상을 위해 수준 3 대신 사용할 수 있는 유용한 고립화 수준이라고 결론 지을 수 있다.