本项目用c++实现了一个基于跳表的轻量级键值型存储引擎,提供数据插入、删除、查询、展示和读写接口。同时,尝试加入了一些c++11新特性,如智能指针、移动语义、 constexpr 、多线程等。
以下为跳表树高设置为20、单线程、本地笔记本上测试的结果。
| 插入数据规模(万条) | 耗时(秒) |
|---|---|
| 10 | 0.401 |
| 50 | 2.113 |
| 100 | 4.341 |
每秒可处理写请求数(IPS): 23.34w
| 查询数据规模(万条) | 耗时(秒) |
|---|---|
| 10 | 0.127 |
| 50 | 0.821 |
| 100 | 2.059 |
每秒可处理读请求数(QPS): 53.21w
启用多线程后,大规模数据的查询效率会有明显提高:本地测试8线程查询一千万条数据,耗时5.68s,QPS约为176w。
Windows下:
./build.bat // 编译
./run.bat // 运行menu.exe,手动操作跳表
./run.bat -t // 运行stress_test.exe,执行压力测试Linux下:
./build.sh // 编译
./run.sh // 运行menu.exe,手动操作跳表
./run.sh -t // 运行stress_test.exe,执行压力测试- InsertNode(插入)
- DeleteNode(删除)
- SearchNode(查询)
- DisplayList(展示)
- DumpFile(转储)
- LoadFile(加载)