To prepare a RTDBMS for coping
with failures, we have developed techniques to handle three recovery activities: logging,
checkpointing, and reloading. The objectives of these techniques are to reduce recovery
time, minimize the percentage of transactions missing their deadlines, and minimize the
percentage of temporal data becoming invalid.
Our logging technique called Transaction Type
Logging (TTL) takes transaction types and data types into consideration and employs both
immediate and deferred update at the same time. Transactions are divided into six types
depending on their characteristics. The logging scheme dynamically changes from performing
no logging activities to performing either immediate or deferred update depending on the
transaction types. We conducted an analytical study comparing the performance of TTL with
that of the best technique called VILMB (Valid-Invalid Logging with Multiple Buffers using
deferred update). The results showed that TTL reduces the REDO cost and number of memory
references during normal operation in most cases at the cost of a slight increase of log
space. When the amount of temporal data in the database exceeds 50%, the performance of
TTL is consistently better than VILMBs.
Our checkpoint scheme considers data
partitioning, update frequency, temporal data valid interval, and data priority. The main
memory database is divided into persistent and temporal data partitions with different
update frequencies and valid intervals. Our algorithm checkpoints partitions of high
update frequency, short temporal data valid intervals, and high data priority more often
than other partitions. The simulation results showed that our technique outperforms the
conventional fuzzy checkpoint algorithm. In the cases of high transaction load and system
failure rate, our technique also outperforms the scheme that considers update frequency
and temporal data valid interval, but not data priority.
We developed two reload algorithms, partition
reload and data priority reload, for Real-Time Main Memory DataBases (RTMMDBs) that aim at
minimizing the number of timing constraints violated in addition to reducing system
recovery time. Common features of the proposed reload algorithms include: 1) the system is
brought on-line before the entire database is reloaded into main memory in order to reduce
down time, 2) transaction execution priorities are considered so that high priority
transactions have more opportunities to meet their deadlines, and 3) data accessed
frequently are reloaded before other data. The two reload algorithms differ from each
other based on their choice of recovery unit and reload priority. In order to evaluate the
performance of the proposed schemes, we conducted extensive simulations. The results show
that: (1) The data priority reload algorithm, which considers transaction priority, data
access frequency, reload prioritization, and preemption during reloading, provides a
significant performance improvement over the conventional reload algorithm. (2) The system
load, database size, and system failure rate determine whether the efficiency of different
reload algorithms is crucial to the overall performance. (3) The key design factors of
RTMMDB reload algorithms are system unavailability, transaction execution priority, reload
threshold, and recovery unit.