SQLite 3.2版本性能显著提升,CPU周期减少2%

发表时间: 2017-08-09 17:16

嵌入式数据库SQLite最近进行了重大更新,新版本中出现了改进的query planner和交互式用户界面的tab-completions的扩展。

SQLite是一个in-process库,实现了独立的服务器,事务SQL数据库引擎。具有多个表、索引、触发器和视图的SQL数据库都别包含在一个磁盘文件中。

SQLite 3.20版本有多个新的扩展,如虚拟表扩展,SQLite_Stmt实现一个虚拟表,并提供关于与数据库连接语句的信息。新的虚拟表联盟可以扩展添加另一个虚拟表,这样就可以使多张独立的rowid表看起来像是一张大表。

Completion扩展是一个正在进行中的项目,它实现了一个名为“Completion”的表值函数,可用于在交互式SQL输入期间完成输入单词的补充完整。

Query Planner在多个方面都做了改进,它将对某些恒定循环表达式做长期的扫描。对于WHERE子句的处理也做了一些改进:当涉及相关查询时,只有在最后才会对WHERE子句约束做求值。

如果需要指定绑定参数,那么要先检查它们的值以确定有部分索引是否可用。如果两个计划具有相同的预估成本和偏差,则尽量选择不使用分类器的方案。

如果该子查询从虚拟表中读取数据,则不再使用RHS LEFT JOIN子查询进行扁平化优化。这一点已更改,因为该操作阻止查询计划程序在子查询结果上创建自动索引,从而降低了查询速度。

除此之外,也对命令shell以及日期、时间函数也做了改进,这些函数可以用于检查约束、表达式索引和部分索引的WHERE子句中。

SQLite 3.2的性能得到了大幅提高,同时也使得CPU周期缩短2%。