Abstract
In this work, we propose B3-tree, a hybrid index for persistent memory that leverages the byte-addressability of the in-memory index and the page locality of B-trees. As in the byte-addressable in-memory index, B3-tree is updated by 8-byte store instructions. Also, as in disk-based index, B3-tree is failure-atomic since it makes every 8-byte store instruction transform a consistent index into another consistent index without the help of expensive logging. Since expensive logging becomes unnecessary, the number of cacheline flush instructions required for B3-tree is significantly reduced. Our performance study shows that B3-tree outperforms other state-of-the-art persistent indexes in terms of insert and delete performance. While B3-tree shows slightly worse performance for point query performance, the range query performance of B3-tree is 2x faster than FAST and FAIR B-tree because the leaf page size of B3-tree can be set to 8x larger than that of FAST and FAIR B-tree without degrading insertion performance. We also show that read transactions can access B3-tree without acquiring a shared lock because B3-tree remains always consistent while a sequence of 8-byte write operations are making changes to it. As a result, B3-tree provides high concurrency level comparable to FAST and FAIR B-tree.
| Original language | English |
|---|---|
| Article number | 3394025 |
| Journal | ACM Transactions on Storage |
| Volume | 16 |
| Issue number | 3 |
| DOIs | |
| State | Published - Aug 2020 |
Keywords
- data structure
- Non-volatile memory
- persistent indexing