返回首页

SQLite 3.53:WAL 修复和新函数

SQLite 3.53 修复了 WAL 模式下并行连接时的关键 DB 损坏错误。添加了 REINDEX EXPRESSIONS、json_array_insert 和带 QRF 的 CLI 改进。优化了 UNION/EXCEPT 查询和 float 转换。

SQLite 3.53 发布:WAL bug 已修复,JSON 改进
Advertisement 728x90

SQLite 3.53:关键 Bug 修复和新 SQL 函数

SQLite 3.53 发布了——这是一个公共领域的紧凑型嵌入式 C 数据库引擎。该库非常适合集成到应用中,而无需许可限制。前一版本 3.51 发布于 2025 年 11 月,3.52 版本被取消。联盟资助其开发。

本版本重点提升 WAL 模式稳定性、ALTER TABLE 增强功能以及 JSON 工具。查询优化提升了表合并以及 UNION/INTERSECT/EXCEPT 操作的性能。

WAL 模式下数据库损坏的关键修复

Write-Ahead Logging 模式导致数据库损坏的 bug 已修复。该问题可追溯至 2010 年(SQLite 3.7.0),在竞争条件下显现:多个连接同时打开数据库并尝试向同一文件写入/提交事务。这种故障很少见,仅在测试场景中可重现。

Google AdInline article slot

此修复对于使用 WAL 的多线程应用至关重要,在此类应用中并发访问是常态。中高级开发者将欣赏消除这一潜在漏洞而无回归问题。

DDL 增强:ALTER TABLE 和 REINDEX EXPRESSIONS

ALTER TABLE 命令现在支持删除 NOT NULL 和 CHECK 约束。非常适合无需全表重建的模式演进。

新的 REINDEX EXPRESSIONS 命令用于重建基于表达式(列上函数或操作)的索引。用于在数据变更后恢复过时的索引。

Google AdInline article slot

示例场景:

  • 更新期间基于 UPPER(column) 的索引会退化。
  • REINDEX EXPRESSIONS(name) 恢复完整性。

来自其他数据库的表上的临时触发器(CREATE TEMP TRIGGER)现在可以修改表或读取数据。

JSON 函数和 VACUUM 改进

新增 json_array_insert() 和 jsonb_array_insert(),用于向 JSON 数组插入元素,同时保留顺序和类型。

Google AdInline article slot

带有 URL 目标的 VACUUM INTO 现在支持 reserve=N 来设置数据库备份副本数量。

新增 JSON 功能列表:

  • json_array_insert(json, path, value):按路径插入。
  • jsonb_array_insert(jsonb, path, value):二进制变体,提升性能。
  • 支持位置和命名插入。

sqlite3 CLI 工具的改进

集成了 QRF(Query Result Formatter)库,用于可读的查询结果输出。

命令变更:

  • .mode 扩展了新格式(默认带框表格)。
  • 表格输出中数字右对齐。
  • 点命令后忽略分号 ;
  • 命令行中的 .sql/.txt 文件作为 SQL + 点命令执行。
  • .timer once —— 仅为下一个查询计时。
  • .progress -timeout S —— 超时中断。
  • .indexes 将模式应用于索引名称,而非表。

这些功能加速了终端中的调试和分析。

优化和平台变更

查询规划器针对表合并和 EXCEPT/INTERSECT/UNION 进行了优化——在大规模数据集上性能提升。

浮点数到文本转换更快(类似 sprintf 操作)。

WebAssembly 构建:新的 VFS opfs-wl 使用 Web Locks API 进行锁定,类似于 opfs。

sqlite3_rsync:-p/--port 选项用于网络 rsync。

停止支持 Windows RT。

通过热点路径中的向量化改进了浮点数到文本性能。

关键要点

  • 修复了罕见但致命的 WAL 多连接访问竞争条件。
  • ALTER TABLE 支持删除 NOT NULL/CHECK;REINDEX EXPRESS 用于基于表达式的索引。
  • json_array_insert() 和带 QRF 的 CLI 用于 JSON/调试。
  • UNION/EXCEPT 和浮点格式化的优化。
  • WebAssembly:带 Web Locks 的 opfs-wl VFS。

— Editorial Team

Advertisement 728x90

继续阅读