返回首页
最新
我只是好奇。有没有人对大型语言模型(LLM)的编码技能中,有多少是归因于Stack Overflow内容(在训练中)的粗略估计或猜测?
我们最近在树莓派上对基于RocksDB构建的轻量级嵌入式数据库AnuDB与SQLite进行了基准测试。尤其是在并行操作方面,性能差异非常显著。
<p>GitHub链接:</p>
AnuDB基准测试:<a href="https://github.com/hash-anu/AnuDBBenchmark">https://github.com/hash-anu/AnuDBBenchmark</a>
<p>AnuDB(核心):<a href="https://github.com/hash-anu/AnuDB">https://github.com/hash-anu/AnuDB</a></p>
<p>为什么要比较AnuDB和SQLite?</p>
SQLite在许多嵌入式用例中表现出色——它简单、经过考验且极其可靠。但在需要并行性或并发写入时,它的扩展性较差。
<p>AnuDB基于RocksDB构建,开箱即用提供了更好的并发性。我们希望通过在树莓派上使用真实基准测试来衡量实际差异。</p>
<p>基准测试设置</p>
平台:树莓派2(ARMv7)<br>
基准测试操作:插入、查询、更新、删除、并行<br>
AnuDB使用RocksDB和MsgPack序列化<br>
SQLite使用原始数据,并启用WAL模式以确保公平性<br>
<p>关键结果</p>
插入:<br>
AnuDB: 448 ops/sec<br>
SQLite: 838 ops/sec<br>
查询:<br>
AnuDB: 54 ops/sec<br>
SQLite: 30 ops/sec<br>
更新:<br>
AnuDB: 408 ops/sec<br>
SQLite: 600 ops/sec<br>
删除:<br>
AnuDB: 555 ops/sec<br>
SQLite: 1942 ops/sec<br>
并行(10线程):<br>
AnuDB: 412 ops/sec<br>
SQLite: 1.4 ops/sec (!)<br>
在并行情况下,AnuDB的速度比SQLite快了279倍以上。
<p>为什么会有如此巨大的并行差异?</p>
即使在WAL模式下,SQLite也使用全局数据库级锁。它并不是为高并发场景设计的。
<p>RocksDB(用于AnuDB)支持:</p>
细粒度锁定<br>
并发读/写<br>
使用LSM树架构实现更好的并行性<br>
这解释了为什么在多线程工作负载下,AnuDB显著优于SQLite。
<p>亲自尝试一下</p>
克隆代码库:<br>
git clone <a href="https://github.com/hash-anu/AnuDBBenchmark">https://github.com/hash-anu/AnuDBBenchmark</a><br>
cd AnuDBBenchmark<br>
./build.sh /path/to/AnuDB /path/to/sqlite<br>
./benchmark<br>
结果将保存到benchmark_results.csv。
<p>何时使用AnuDB</p>
如果您需要高并发的嵌入式存储,处理遥测、传感器数据或并行工作负载,或者希望在负载下比SQLite更轻量和更快,请使用AnuDB。
<p>如果您需要SQL兼容性,重视成熟的生态系统/工具,请继续使用SQLite。</p>
<p>欢迎反馈</p>
这是一项早期实验。我们正在积极开发AnuDB,并希望获得反馈:<br>
我们的基准测试公平吗?<br>
我们还可以在哪里进一步优化?<br>
这对您的嵌入式项目有用吗?
常见问题解答:<a href="https://www.ftc.gov/business-guidance/resources/rule-unfair-or-deceptive-fees-frequently-asked-questions" rel="nofollow">https://www.ftc.gov/business-guidance/resources/rule-unfair-...</a>