SQLite 3.4.60 版本发布,带来优化器和函数增强!

SQLite 开发团队于 2024 年 05 月 23 日发布了 SQLite 3.46.0 版本,带来了不少优化器和函数相关的增强,我们来了解一下新版本的改进功能。

优化数据库

新版本增强了 PRAGMA optimize 指令,简化了它的使用,具体包括:

  • PRAGMA optimize 可以自动设置一个合理的分析数量上限,避免大型数据库的 ANALYZE 操作时间过长。
  • 位掩码参数支持新的选项 0x10000。该选项表示检查所有的表大小,查看是否存在明显增长或者收缩的表,可以通过重新分析获取性能提升。
  • 自动重新分析没有 sqlite_stat1 记录的表。

日期时间函数

  • strftime() 函数增加了新的格式说明符 %G、%g、%U 以及 %V。
  • 日期时间函数增加了修饰符 ceiling(向上取整)和 floor(向下取整),用于解决日期增减整数月或者年时的歧义问题。例如 2024-02-29 增加 1 年应该是 2025-02-28 还是 2025-03-01 的问题。
  • 如果 SQLite 知道时间已经位于 UTC 或者 localtime,日期时间函数中的 utc 或者 localtime 修饰符不会执行任何操作。

查询优化器

  • "VALUES 子句协程"优化可以将包含数千个 VALUES 数据的 INSERT 语句的执行时间减少一半,同时占用的内存也减少一半。
  • 即使索引超过表的大小,仍然允许使用索引实现查询,例如"SELECT count(DISTINCT col) FROM ..."。
  • 当一个 SQL 函数的参数都是常量时,可以将函数的结果识别为常量。
  • 增强了 WHERE 子句下推优化,当 WHERE 子句中包含非关联子查询时可以使用条件下推。
  • 当 SQL 解析器堆栈溢出时,可以从堆内存中分配更多的内存,而不是返回"解析器堆栈溢出"错误。

JSON 相关

  • 增加了 json_pretty() 函数,美化输出,便于阅读。
  • JSON5 字符串常量支持 ASCII 控制字符。
  • 修复了 -> 以及 ->> 运算符,当它们右侧的参数是一个看起来像整数的字符串时,不再当作整数处理(\[N\]),而是当作字符串处理(.X)。这种方式和 PostgreSQL 实现一致。

常量字面值

  • 数字常量支持下划线(_),方便阅读。例如 10_000_000。
  • 允许使用大型十六进制常量作为表字段的默认值。
相关推荐
2603_965148112 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
ltl2 小时前
RocksDB 经典故障排查:L0、compaction 与 write stall
数据库
xfhuangfu3 小时前
Oracle中建立到CDB和PDB的连接
数据库·oracle·rpc
小小龙学IT3 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
NineData4 小时前
DTCC 2026 预告|NineData CEO& 创始人叶正盛:面向 AI Agent 的数据库 DevOps 与数据复制实践
数据库·人工智能·数据库开发·devops·ninedata·数据库技术·dtcc
J_bean4 小时前
MySQL 事务是否必须手动开启?
数据库·mysql·数据库事务·自动提交·手动提交
J_bean4 小时前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定
浪子明X5 小时前
从 MongoDB 文档到关系模型:构建可重跑、可对账的数据迁移流水线
数据库·mongodb·oracle
杜子不疼.5 小时前
国产数据库撑起固井软件自主化:金仓 × 中海油服「海恒 Cemsol」落地解析
数据库
隔窗听雨眠5 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle