面试真题

数据库 · 困难 · 腾讯

跳表怎么做并发的?以RocksDB为例阐述

困难 数据库 🎤 腾讯
参考答案
结论:跳表并发多采用无锁或细粒度锁,RocksDB跳表读无锁、写用原子操作+内存屏障,允许并发读和单写或有限并发写。原理:RocksDB MemTable跳表实现中,查询完全无锁遍历;插入时,从底向上插入,使用std::atomic保证节点指针原子发布,通过Acquire/Release语义确保可见性;删除采用标记逻辑删除(或合并时整体丢弃)。因跳表节点插入只改前向指针,利用CAS可支持多线程写入不同位置;但RocksDB为简化仅允许单线程写或写队列串行化,读完全并发。对比红黑树,无需全局锁。
题目整理自公开面经,答案由校招宝自研生成,仅供参考