基于字典的透明行级压缩,适用于 SQLite
sqlite 扩展,为 sqlite 提供基于字典的透明行级压缩功能。这基本上允许您对 sqlite 数据库中的条目进行压缩,就像对整个 DB 文件进行压缩一样,但同时仍然保留随机访问。 还可以参阅公告博客文章,了解一些动机、基准和杂谈: https://phiresky.github.io/blog/2022/sqlite-zstd 根据数据情况,这可以将数据库的大小减少 80%,同时性能大体上保持不变(甚至有所提升,因为要从磁盘读取的数据量更小)。
请注意,根据使用场景,https://github.com/mlin/sqlite_zstd_vfs 等压缩 VFS 可能更适合。它具有非常不同的权衡和功能,但最终结果是相似的。
数据将被移动到 _table_name_zstd,而 table_name 将是一个可以正常查询的视图,包括 SELECT、INSERT、UPDATE 和 DELETE 查询。此函数本身不会压缩任何数据,您需要随后调用 zstd_incremental_maintenance。config 是一个描述配置的 json 对象。详细信息请参阅 TransparentCompressConfig。
blob 或 text 数据,具体取决于声明的数据类型的相关性(例如,VARCHAR(10) 可以,但 int 不可以)。 - 主键不能为任何行的空值,否则更新可能不会按预期执行。 - sqlite3_changes() 会为修改查询返回 0(请参阅这里)。 - SQLite 字符串暂无开放 Issues,或尚未同步最近议题。