To adapt database technology to new environments like cloud platforms or multi-core hardware, or to try anew to provide an extensible database platform, it is useful to separate transaction services from data management elements that need close physical proximity to data. With "generic" transactional services of concurrency control and recovery in a separate transactional component (TC), indexing, cache and disk management, now in a data component (DC), can be simplified and tailored more easily to the platform or to a data type extension with a special purpose index. This decomposition requires that details of the DC's management of data be hidden from the TC. Thus, locking and logging need to be "logical", which poses a number of problems. One problem is the handling of locking for ranges of keys. Locks need to be taken at the TC prior to the records and their keys being known to the TC. We describe generic two approaches for dealing with this. (1) Make a "speculative" visit" to the DC to learn key values. (2) Lock a "covering resource" first, then learn and lock key values and ultimately release the covering resource lock. The "table" is the only logical (and hence known to the TC) covering resourse in the traditional locking hierarchy, but using it limits concurrency. Concurrency is improved with the introduction of new partition resources. We show how partitions as covering resources combine high concurrency with low locking overhead. Using partitions is sufficiently effective to consider adapting it for a traditional database kernel.
[1]
Jonathan Stern,et al.
Oracle Essentials: Oracle Database 10g
,
2004
.
[2]
Raghu Ramakrishnan,et al.
Database Management Systems
,
1976
.
[3]
Kalen Delaney.
Inside Microsoft SQL Server 2005: The Storage Engine
,
2006
.
[4]
Gerhard Weikum,et al.
Unbundling Transaction Services in the Cloud
,
2009,
CIDR.
[5]
C. Mohan,et al.
ARIES/KVL: A Key-Value Locking Method for Concurrency Control of Multiaction Transactions Operating on B-Tree Indexes
,
1990,
VLDB.
[6]
Philip A. Bernstein,et al.
Principles of Transaction Processing
,
1996
.
[7]
Jennifer Widom,et al.
Database Systems: The Complete Book
,
2001
.
[8]
Irving L. Traiger,et al.
The Recovery Manager of the System R Database Manager
,
1981,
CSUR.
[9]
Michael Dang,et al.
Understanding db2®: learning visually with examples, second edition
,
2007
.
[10]
David B. Lomet,et al.
Key Range Locking Strategies for Improved Concurrency
,
1993,
VLDB.
[11]
Andreas Reuter,et al.
Transaction Processing: Concepts and Techniques
,
1992
.
[12]
Philip A. Bernstein,et al.
Principles of transaction processing: for the systems professional
,
1996
.
[13]
Irving L. Traiger,et al.
The notions of consistency and predicate locks in a database system
,
1976,
CACM.
[14]
Michael Dang,et al.
Understanding DB2: Learning Visually with Examples
,
2005
.