We present a design for multi-version concurrency control and recovery in a
main memory database, and describe logical and physical versioning schemes
that allow read-only transactions to execute without obtaining data item l
ocks or system latches. Our schemes enable a system to provide the guarante
e that updaters will never interfere with read-only transactions, and read-
only transactions will not be delayed due to data contention. Consequently,
transaction executions become more predictable-this partially alleviates a
major problem in real-time database system (RTDBS) scheduling, namely, sig
nificant unpredictability in transaction execution times. As a result, in a
ddition to a transaction's deadline, a more accurate estimate of its execut
ion time can also be taken into account, thus facilitating better schedulin
g decisions. Our contributions include several space saving techniques for
the main-memory implementation, including improved methods for logical agin
g of data items and the introduction of physical aging for low-level struct
ures. Some of these schemes have been implemented on a widely-used software
platform within Lucent, and the full scheme is implemented in the Dali mai
n-memory storage manager.