SQLite 3.45版本已发布,这是一款轻量级的关系型数据库引擎,通过SQL语言访问。与传统的数据库服务器(如MySQL或PostgreSQL)不同,其特点是不采用传统的客户端-服务器架构,而是直接集成到程序中。
由于其极轻量级的特性,SQLite是世界上最广泛使用的数据库引擎之一。它被广泛应用于许多消费类程序,并且在嵌入式系统中也非常流行,包括最新的智能手机。
SQLite 3.45.1 截图
SQLite 3.45 的主要更新:
在SQLite 3.45中,与处理JSON格式数据相关的SQL功能进行了重大更新。这些功能已经重写并迁移到新的JSONB解析树内部格式,该格式可以直接序列化并存储在数据库中。此外,此更新消除了在处理JSON值时重复解析的需要,显著提高了涉及JSON格式数据的查询性能和效率。
在新版本的JSON生成功能中,实施了一项重大更改:现在生成的数据采用二进制JSONB格式,而不是文本格式。这对系统中的JSON数据的优化和操作表示了一项改进。
此外,json_valid()函数中引入了一个可选的第二参数。此参数允许指定一个位掩码,用于定义有效JSON的特征。例如,通过指定0x04,将识别JSONB对象为有效。同样,通过指定0x01,将识别RFC-8259格式的JSON文本为有效。选项0x05允许同时识别两种选项。
默认情况下,SQLITE_DIRECT_OVERFLOW_READ 优化是开启的,它允许直接从文件中读取比标准 B 树页面更大的溢出页面,而无需经过缓存。但是,如果在编译过程中想要禁用此优化,可以使用选项 “-DSQLITE_DIRECT_OVERFLOW_READ=0″。
查询计划器在优化传递限制方面经历了显著改进。这使得查询引擎在考虑传递限制时能够更好地优化查询,并提高在 “ANALYZE” 操作期间忽略低质量索引的能力。这些改进有助于确保 SQLite 数据库中查询的最佳性能和高效执行。
另外,在 Windows 平台上,命令行界面已经更新,以改善对 UTF-8 编码内容的显示。这确保了在 Windows 环境下通过命令行与数据库进行交互时的一致性和可读性体验。此外,在播放 “.dump” 脚本时,命令行界面还启用了自动检测 CLI 的使用,并对配置进行了必要的更改,例如 “.dbconfig defensive off” 和 “.dbconfig dqs_dll on”,以确保最佳运行。
最后,SQLITE_RESULT_SUBTYPE 属性已经添加到应用程序端定义的 SQL 函数中。这使得可以从函数中调用 sqlite3_result_subtype() 来检查参数的子类型,从而在应用程序中处理数据时提供了更大的灵活性和检查能力。
其他显著变化包括:
- FTS5新增了tokendata选项:在全文搜索的虚拟表FTS5中,新增了tokendata选项,用于进行全文搜索。
- WAL2事务日志模式:SQLite的实验性版本引入了一个名为WAL2(“PRAGMA journal_mode = wal2”)的新事务日志模式。此模式使用两个wal文件(“database-wal”和“database-wal2”)而不是一个,解决了wal文件在长时间未确认事务或长时间读取过程中不受控制地增长的问题。
- 在这种模式下,写入数据库时,新数据将添加到第一个wal文件中。当该文件达到足够大的大小时,将开始写入第二个文件。切换到第二个wal文件后,第一个文件可供修改和覆盖。这一循环重复进行,解决了wal文件不受控制增长的问题。
- JSON处理方面的变化:对JSON数据处理方式的变化导致与旧版本不兼容,并导致某些用于从文件加载JSON数据的构建终止。
最后,如果你想了解更多信息,请查阅相关链接。
相关:在 Ubuntu 20.04 上安装 SQLite,以及 SQLite 的增删改查 https://www.linuxmi.com/ubuntu-20-04-sqlite.html