SQLite 3.53.0版本发布,重要更新

SQLite 官方团队于 2026 年 4 月 9 日 发布了 SQLite 3.53.0 版本。本次更新在稳定性修复的基础上,引入了多项 SQL 语言能力增强、CLI 工具革新以及新的 C API 接口,整体属于强烈推荐升级的重要版本。

关键稳定性修复

SQLite 3.53.0 版本修复了 WAL-reset 场景下可能导致数据库损坏的严重缺陷。该问题影响使用 WAL(Write‑Ahead Logging)模式的数据库,在异常重启或特定事务序列下可能触发数据损坏。

本次修复显著提升了 WAL 模式下的可靠性,使用 WAL 模式的系统建议尽快升级至 3.53.0。

SQL语言能力增强

ALTER TABLE 现在可以支持添加、移除 NOT NULL 约束,支持添加、移除CHECK 约束;进一步补齐了 SQLite 在表结构演进方面的能力,与主流关系型数据库更加接近。

新增 SQL 语句 REINDEX EXPRESSIONS,用于重建表达式索引,可以修复陈旧表达式索引(stale expression indexes)问题,也是 3.52.x 系列撤回事件后的重要修复与增强手段。

新增内置 JSON 函数 json_array_insert()、jsonb_array_insert(),进一步增强了 SQLite 对 JSON/JSONB 数据结构的原生操作能力。

TEMP 触发器现在可以查询和修改 main 模式中的表,对于依赖 TEMP 触发器做跨模式操作的程序尤为有用。

当 VACUUM INTO 的目标文件使用 URI 文件名并且 URI 中包含 reserve=N(0--255)参数时,新生成的数据库将使用相同的 reserve。

CLI重大改进

SQLite 3.53.0 引入了全新的 Query Result Formatter(查询结果格式化库),并且已经集成到了 CLI(命令行工具)中。

交互式 CLI 现在默认使用 Unicode 画框表格展示结果;数值字段默认右对齐,整体可读性显著提升;批处理模式保持旧输出格式,确保脚本兼容性。

同时,CLI 还包含了多项实用增强:

  • .mode 命令大幅增强;
  • .indexes 命令的 pattern 参数改为匹配索引名;
  • .progress 名新增 --timeout 参数;
  • .timer once 支持仅统计下一条 SQL;
  • 自动加载 .sql 或者 .txt 文件作为脚本执行;
  • 修复 .testcase 以及 .check 命令长期存在的问题。

新增与增强的 C API

SQLite 3.53.0 同步扩展了底层接口能力,新增函数:

  • sqlite3_str_truncate();
  • sqlite3_str_free();
  • sqlite3_carray_bind_v2();
  • sqlite3_prepare_v3() 新增 SQLITE_PREPARE_FROM_DDL 选项;
  • 新增常量 SQLITE_UTF8_ZT;
  • 新增选项 SQLITE_LIMIT_PARSER_DEPTH、SQLITE_DBCONFIG_FP_DIGITS

查询规划器改进

SQLite 3.53.0 对查询规划器进行了多项深度优化,尤其针对复杂查询和数据仓库类负载:

  • EXCEPT、INTERSECT、UNION 集合操作统一改为排序加归并(sort-and-merge)算法,取代过去的哈希表方式,在绝大多数场景下性能更优、内存使用更稳定。
  • 星型模型(Star Schema)优化,改进大规模多表 JOIN 场景下的连接顺序选择,优化数据分析、报表类查询。
  • EXISTS-to-JOIN 优化增强,新生成的 JOIN 不再必须位于最内层循环,只要依赖关系满足,即可放置在外层,提升复杂子查询的可优化空间。
  • omit-noop-join 优化增强,现在可以一次性省略整个不影响结果的 JOIN 链,减少不必要的表访问与循环层级。
  • GROUP BY、ORDER BY 索引复用,允许如下形式的查询使用单一索引进行优化,前提是当 e1 与 e2 只有 ASC、DESC 顺序上不同:GROUP BY e1 ORDER BY e2。
  • 虚拟表 DISTINCT 优化,在结果集与 ORDER BY 不完全一致的场景下允许虚拟表自行优化 DISTINCT。

其他更新

SQLite 3.53.0 还重写了浮点数与文本之间的转换逻辑,正式引入 Self‑Healing Index(索引自愈)机制,增强了 Session 扩展接口,正式停止支持 Windows RT,更新了 JavaScript / WASM 平台。

完整的发行说明参考:

https://sqlite.org/releaselog/3_53_0.html

相关推荐
Bczheng12 小时前
九.Berkeley DB数据库 序列化和钱包管理(1)
数据库
cozil2 小时前
记录mysql创建数据库未指定字符集引发的问题及解决方法
数据库·mysql
架构师老Y2 小时前
013、数据库性能优化:索引、查询与连接池
数据库·python·oracle·性能优化·架构
AC赳赳老秦2 小时前
OpenClaw数据库高效操作指南:MySQL/PostgreSQL批量处理与数据迁移实战
大数据·数据库·mysql·elasticsearch·postgresql·deepseek·openclaw
一 乐2 小时前
校园线上招聘|基于springboot + vue校园线上招聘系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·校园线上招聘系统
liliangcsdn2 小时前
如何基于sentence_transformers构建向量计算工具
数据库·人工智能·全文检索
rchmin2 小时前
向量数据库Milvus安装及使用实战经验分享
数据库·milvus
ego.iblacat2 小时前
Python 连接 MySQL 数据库
数据库·python·mysql
祖传F873 小时前
quickbi数据集数据查询时间字段显示正确,仪表板不显示
数据库·sql·阿里云