Avoiding Conflicts between Reads and Writes Using Dynamic Versioning
Omiecinski, Edward Robert
MetadataShow full item record
In this paper, we discuss a new approach to multi-version concurrency control, called Dynamic Versioning, that avoids the data contention due to conflicts between Reads and Writes. A data item is allowed to have several committed versions and at most one uncommitted version. A conflict between a Read and a Write is resolved by imposing an order between the requesting transactions, and allowing the Read to access one of the committed versions. The space overhead is reduced to the minimum possible by making the versions dynamic; a version exists only as long as it may be accessed by an active transaction. Conditional lock compatibilities are used for providing serializable access to the multiple versions. The results from simulation studies indicate that the dynamic versioning method, with little space overhead (about 1\% the size of the database), significantly reduces blocking (by 60\% to 90\%) compared to single-version two-phase locking. Lower blocking rates increase transaction throughput and reduce variance in transaction response times by better utilization of resources. This approach also reduces starvation of short transactions and subsumes previous methods proposed for supporting long-running queries. The dynamic versioning method can be easily incorporated into existing DBMS systems. The modifications required for the lock manager and the storage manager modules to implement dynamic versioning are discussed.