Timescale 自动支持 INSERT
到压缩数据块中。但是,如果您需要插入大量数据,例如作为批量回填操作的一部分,您应该首先解压缩数据块。将数据插入压缩数据块比插入未压缩数据块的计算成本更高。当数据行数很多时,这种成本会累加。
重要提示
当压缩数据时,您可以减少 Timescale 实例的存储空间量。但是,您应始终保留一些额外的存储容量。这使您可以灵活地在必要时解压缩数据块,以执行批量插入等操作。
本节介绍用于解压缩数据块的命令。您可以按时间筛选以选择要解压缩的数据块。
在解压缩数据块之前,请停止要解压缩的超表上的任何压缩策略。完成回填或更新数据后,重新开启策略。数据库会在下一个计划作业中自动重新压缩您的数据块。有关如何使用 alter_job()
函数停止和运行压缩策略的更多信息,请参阅 API 参考。
有几种方法可以选择和解压缩数据块。
要按名称解压缩单个数据块,请运行以下命令
SELECT decompress_chunk('_timescaledb_internal.<chunk_name>');
其中,<chunk_name>
是您要解压缩的数据块的名称。
要根据时间范围解压缩一组数据块,您可以使用 show_chunks
的输出来解压缩每个数据块
SELECT decompress_chunk(c, true)FROM show_chunks('table_name', older_than, newer_than) c;
有关 decompress_chunk
函数的更多信息,请参阅 decompress_chunk
API 参考。
如果您想使用更精确的匹配约束,例如空间分区,您可以构建如下命令
SELECT tableoid::regclass FROM metricsWHERE time = '2000-01-01' AND device_id = 1GROUP BY tableoid;tableoid------------------------------------------_timescaledb_internal._hyper_72_37_chunk
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页。