在寻找更快的 SQLite - 博客

主要观点:通过将 SQLite 重写为 Rust 并使用异步 I/O(io_uring)和存储解耦(Disaggregated Storage),可使 SQLite 速度大幅提升,在多租户无服务器运行时环境下尾延迟能降低 100 倍,Limbo 代码已开源且是 Turso 的官方项目。
关键信息:

  • 论文“Serverless Runtime / Database Co-Design With Asynchronous I/O”探讨服务器less 计算兴起及数据库延迟问题,提出将数据库嵌入边缘运行时的解决方案。
  • io_uring 可让应用提交 I/O 请求后并发执行其他任务,直到 I/O 完成。SQLite 执行查询时同步 I/O 会导致线程阻塞,影响资源利用和增加延迟。
  • Limbo 修改 VM 和 BTree 组件支持异步 I/O,用异步字节码指令替代同步的,通过异步 I/O 去除阻塞并提高并发。还提出解耦查询和存储引擎以最大化资源利用。
  • 评估结果显示在 p999 时尾延迟降低 100 倍,SQLite 查询延迟随线程数增加而恶化,Limbo 代码开源于[https://github.com/tursodatab...],目前工作仍在进行中,未来将进行更多多读写器的基准测试。
    重要细节:
  • 论文为研讨会论文,篇幅短且聚焦服务器less 和边缘计算,学习成果可更广泛应用。
  • Cloudflare Workers 已实现将数据置于边缘,但 KV 接口不适合所有问题域,SQL 更优且嵌入 SQLite 可直接在服务器less 运行时使用。
  • 重写 SQLite 需将其用 Rust 实现并适应 io_uring 的异步 I/O 模型,Limbo 架构图展示相关组件及字节码对比等。
阅读 7
0 条评论