Chuntao Hong, Mao Yang, Lidong Zhou, Lintao Zhang, Dong Zhou, and Chia-pao Kuo
Database systems are nowadays increasingly deployed on multi-core commodity servers, with replication to guard against failures. On one hand, a database engine is best designed to scale with the number of cores and to offer a high degree of parallelism on a modern multi-core architecture. On the other hand, replication traditionally resorts to a certain form of serialization for data consistency among replicas. In the widely used primary/backup replication with log shipping, concurrent executions on the primary and the serialized log replay on a backup creates a serious parallelism gap. Our experiments with MySQL, a popular open-source database system, shows that on a 16 core configuration the serial replay on a backup can sustain less than one third of the throughput achievable on the primary under an OLTP workload.
This paper proposes KuaFu to close the parallelism gap on replicated database systems by enabling concurrent replay of transactions on a backup. KuaFu maintains write consistency on backups by tracking transaction dependencies. Concurrent replay on a backup does introduce read inconsistency between the primary and a backup. KuaFu further leverages multi-version concurrency control to produce snapshots in order to restore the consistency semantics. We have implemented KuaFu with MySQL; our evaluations show that KuaFu allows a backup to keep up with the primary while preserving replication consistency.
|Published in||Proceedings of the 29th IEEE International Conference on Data Engineering|
|Publisher||International Conference on Data Engineering|