The present disclosure relates generally to managing multi-version data record concurrency and more particularly to accelerating multi-version concurrency control using hardware transactional memory.
A multi-version application, such as a multi-version database, manages multiple versions of its data records. The multi-version database stores both current data records and historical data records in rows of a relational data table. The rows are typically annotated with timestamps representing the time period during which a row is valid or was valid. In a multi-version database system, new data records do not physically replace old ones. Instead, a copy-on-write protocol generates a new version of a data record, which becomes visible to other transactions at commit time. Conceptually, many rows for a data record may exist, each row corresponding to a state of the multi-version database at some point in time. Older versions of data records may be garbage-collected as the need for the older versions diminishes, in order to reclaim space for new data records.