Read performance of LSM-tree-based Key-Value Stores suffers from serious read amplification caused by the leveled structure used to improve write performance. Caching is one of the main techniques to improve the performance of read operations. Designing an efficient caching algorithm is challenging because the leveled structure obscures the cost and benefit of caching a particular key, and the trade-off between point lookup and range query operations further complicates the cache replacement decisions. We propose AC-Key, an Adaptive Caching enabled KeyValue Store to address these challenges. AC-Key manages three different caching components, namely key-value cache, key-pointer cache, and block cache, and adjust their sizes according to the workload. AC-Key leverages a novel caching efficiency factor to capture the heterogeneity of the caching costs and benefits of cached entries. We implement AC-Key by modifying RocksDB. The evaluation results show that the performance of AC-Key is higher than that of RocksDB in various workloads and is even better than the best offline fix-sized caching scheme in phase-change workloads.
|Original language||English (US)|
|Title of host publication||Proceedings of the 2020 USENIX Annual Technical Conference, ATC 2020|
|Number of pages||13|
|State||Published - 2020|
|Event||2020 USENIX Annual Technical Conference, ATC 2020 - Virtual, Online|
Duration: Jul 15 2020 → Jul 17 2020
|Name||Proceedings of the 2020 USENIX Annual Technical Conference, ATC 2020|
|Conference||2020 USENIX Annual Technical Conference, ATC 2020|
|Period||7/15/20 → 7/17/20|
Bibliographical noteFunding Information:
We thank the anonymous ATC reviewers and our anonymous shepherds for their feedback. This work was partially supported by NSF I/UCRC Center Research in Intelligent Storage and the following NSF awards 1439622, 1525617, and 1812537.
Copyright © Proc. of the 2020 USENIX Annual Technical Conference, ATC 2020. All rights reserved.