news 2026/10/14 17:49:15

Stoolap vs SQLite:53项基准测试赢了47项,嵌入式数据库究竟能有多快?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Stoolap vs SQLite:53项基准测试赢了47项,嵌入式数据库究竟能有多快?

【免费下载链接】stoolap

A Modern Embedded SQL Database written in Rust

项目地址:https://gitcode.com/gh_mirrors/st/stoolap
点击查看免费下载

Stoolap是一个用纯 Rust 编写的现代嵌入式 SQL 数据库,主打低延迟事务与实时分析。它和老牌选手SQLite放在一起跑了 53 项基准测试,结果显示 Stoolap 在绝大多数场景下显著领先——有些查询快了 300 倍以上。嵌入式数据库的性能天花板,到底能捅到多高?这篇文章带你拆开看这份对比报告。

这套基准测试是怎么做的

公平对比的关键在于“同一起跑线”。这次测试把 Stoolap、SQLite、DuckDB 拉到完全相同的工作负载下:

参数取值
数据量10,000 行
迭代次数点查 500 / 中等 250 / 重度 50
模式内存模式(In-memory)
平台Apple Silicon
采样Stoolap 取 3 会话 30 轮最优,SQLite/DuckDB 取 10 轮最优
驱动rusqlite v0.40.2、duckdb v1.10501.0

测试代码放在独立的对比 crate 里,用 prepared statement 保证两边执行路径一致,数据分布也完全相同。完整配置与结果见 BENCHMARKS.md,对比逻辑源码在 compare/ 目录,可复现的样例在 examples/benchmark.rs。

53 项测试总览:三档覆盖

53 项测试分成三档,从“日常点查”一路压到“刁钻瓶颈”:

  • 基础操作(11 项):SELECT / INSERT / UPDATE / DELETE、索引查询、聚合 GROUP BY
  • 进阶操作(13 项):JOIN、子查询、CTE、窗口函数、UNION、CASE
  • 瓶颈猎手(29 项):DISTINCT、LIKE、NOT IN、多列排序、嵌套子查询、OFFSET 分页等

总战绩:Stoolap 在 53 项里拿下绝大多数,整体胜率超过 90%,仅有个别简单表达式场景被 SQLite 小幅反超。

快得夸张的几项:最高 360 倍

最能拉开差距的,是那些“看起来不复杂、实则吃优化器”的查询。挑几个最有代表性的:

操作StoolapSQLite加速比
COUNT DISTINCT0.26 us92.07 us360x
Compare with subquery4.78 us1273.44 us266x
DELETE complex2.20 us338.53 us154x
Scalar subquery7.91 us330.70 us42x
聚合(GROUP BY)42.12 us1126.52 us27x
NOT IN 子查询64.28 us1668.07 us26x
DISTINCT + ORDER BY4.46 us121.32 us27x

点查(SELECT by ID)更是压到了0.11 微秒,比 DuckDB 快约 634 倍。换句话说,一次主键查询只花掉不到千分之一毫秒。

优势场景:事务型 + 实时分析

从数据分布看,Stoolap 的强项非常清晰:

  • OLTP 点查:主键查询、单行增删改,延迟极低
  • 实时聚合:DISTINCT、GROUP BY、COUNT DISTINCT 大幅领先
  • 半连接模式:EXISTS、IN 子查询走索引下推
  • 复杂 DML:带条件的批量删除、更新
  • 内存安全:纯 Rust,无 C/C++ 依赖链

诚实说明:SQLite 赢在哪

好的对比必须保留“输掉的部分”。SQLite 在几项简单表达式上小幅领先,差距普遍在 1.1~1.4 倍之间:

操作SQLiteStoolap倍数
COALESCE + IS NOT NULL2.56 us3.52 us1.4x
多 CTE(2 个)14.77 us19.73 us1.3x
字符串拼接(||)4.74 us5.86 us1.2x
UPDATE by ID0.53 us0.59 us1.1x

这些都是微秒级的绝对差距,对绝大多数业务几乎无感,但说明 SQLite 在“简单、单线程”的轻量场景里依然是极强对手。

架构差异才是性能分水岭

为什么差距这么大?答案藏在存储与执行模型里:

维度StoolapSQLite
存储模型热行内存 MVCC,检查点落为不可变列式 volume(LZ4 + 字典 + zone map)行式 B-tree 页
并发MVCCWAL / 锁
查询优化基于统计信息的代价优化 + 自适应执行规则式代价优化
并行执行支持(Rayon)不支持
语言纯 Rust(内存安全)C

简单说,Stoolap 用“内存 MVCC + 列式落盘 + 代价优化器 + 并行”的组合拳,把点查和聚合的常数项压到了极低;而 SQLite 以行式 B-tree 见长,在简单查询上稳定可靠。

该选哪一个

  • 选 Stoolap:低延迟 OLTP、实时分析、半连接/子查询密集、需要 MVCC 事务与时间旅行(AS OF)、追求纯 Rust 内存安全的嵌入式或边缘场景。
  • 选 SQLite:单线程轻量应用、简单嵌套连接、追求极致兼容性与生态成熟度。

结语

这份 53 项基准测试给出的信号很明确:在点查、聚合和子查询这类“日常却高频”的负载上,纯 Rust 的 Stoolap 把嵌入式数据库的延迟下限又往下推了一大截。当然,基准是“某一刻、某台机器、某份工作负载”的快照——官方也提醒,务必在你自己的硬件与数据分布上复跑验证。但方向上,现代嵌入式 SQL 数据库的速度,确实比我们想象的更快。

【免费下载链接】stoolap

A Modern Embedded SQL Database written in Rust

项目地址:https://gitcode.com/gh_mirrors/st/stoolap
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 17:49:14

SAP MTO委外加工:移动类型与批次策略的库存转移实战

简介:SAP按单生产委外加工是围绕客户定制需求组织的常见生产模式。围绕这一主题的总结文档专为SAP实施顾问、生产计划及物料管理人员编写,聚焦MTO外包流程中的核心控制点。内容系统性对比了两个典型场景:两层BOM结构下外包自身销售成品&#…

作者头像 李华
网站建设 2026/10/14 17:49:11

CST和HFSS哪个好学?从时域与频域算法看懂电磁仿真软件选型

CST和HFSS哪个好学?我几乎每隔几天就会被问到一次。问这个问题的,要么是刚进实验室的研究生,要么是公司里要转行做电磁设计的硬件工程师,还有一部分是纯粹自学的在校生。每次我都得从“这两个软件不是同一个东西”开始讲起&#x…

作者头像 李华
网站建设 2026/10/14 17:49:04

编译原理实验报告:构建可验证的编译器工程实践骨架

简介:本资源是东北大学秦皇岛分校编译原理课程的词法分析实验报告,面向计算机专业本科生及编译技术初学者,聚焦PL/0语言词法分析器的设计与C实现,解决从理论到代码落地的关键实践问题。压缩包为单个122KB的Word文档(.d…

作者头像 李华
网站建设 2026/10/14 17:48:34

DB2异机恢复:跨平台环境契约校验与实操避坑指南

简介:本资源是一份面向DB2数据库管理员与企业级灾备工程师的异机恢复技术实践指南,聚焦基于Veritas NetBackup(NBU)实现DB2跨服务器恢复的核心配置与操作要点。内容系统覆盖DB2 Agent安装与db2uext2用户出口程序部署、关键数据库参…

作者头像 李华