Timescale Cloud:性能、规模、企业级
自托管产品
MST
如果您在自己的硬件上运行 Timescale,可以通过在表空间之间移动数据块(chunk)来节省存储空间。通过将较旧的数据块移动到更便宜、更慢的存储中,您可以节省存储成本,同时仍能将更快、更昂贵的存储用于频繁访问的数据。移动不常访问的数据块还可以提高性能,因为它将历史数据与更新数据的持续读写工作负载隔离开来。
在 Timescale 上免费试用
Timescale 是一项完全托管的服务,具备自动备份和恢复、带复制功能的高可用性、无缝扩展和调整大小等诸多特性。您可以免费试用 Timescale 三十天。
要将数据块移动到新的表空间,首先需要创建新的表空间并设置存储挂载点。然后,您可以使用 move_chunk
API 调用将单个数据块从默认表空间移动到新表空间。move_chunk
命令还允许您将属于这些数据块的索引移动到适当的表空间。
此外,move_chunk
允许您在迁移期间对数据块进行重新排序。这可以用于加快查询速度,其工作方式与 reorder_chunk
命令类似。
注意
您必须以超级用户身份(例如 postgres
用户)登录才能使用 move_chunk()
API 调用。
创建新的表空间。在此示例中,表空间名为
history
,归postgres
超级用户所有,挂载点为/mnt/history
CREATE TABLESPACE historyOWNER postgresLOCATION '/mnt/history';列出您想要移动的数据块。在此示例中,数据块包含两天前的数据
SELECT show_chunks('conditions', older_than => INTERVAL '2 days');将数据块及其索引移动到新的表空间。您也可以在此步骤中重新排序数据。在此示例中,名为
_timescaledb_internal._hyper_1_4_chunk
的数据块被移动到history
表空间,并根据其时间索引进行重新排序SELECT move_chunk(chunk => '_timescaledb_internal._hyper_1_4_chunk',destination_tablespace => 'history',index_destination_tablespace => 'history',reorder_index => '_timescaledb_internal._hyper_1_4_chunk_netdata_time_idx',verbose => TRUE);您可以通过查询
pg_tables
来列出表空间上的所有数据块,从而验证数据块是否已位于正确的表空间中SELECT tablename from pg_tablesWHERE tablespace = 'history' and tablename like '_hyper_%_%_chunk';您还可以验证索引是否位于正确的位置
SELECT indexname FROM pg_indexes WHERE tablespace = 'history';
要一次移动多个数据块,请使用 FROM show_chunks(...)
选择要移动的数据块。例如,要移动名为 example
的超表中包含 1 到 3 周前数据的数据块
SELECT move_chunk(chunk => i,destination_tablespace => '<TABLESPACE>')FROM show_chunks('example', now() - INTERVAL '1 week', now() - INTERVAL '3 weeks') i;
将数据块移动到较慢的表空间后,您可以将其移回默认的、更快的表空间
SELECT move_chunk(chunk => '_timescaledb_internal._hyper_1_4_chunk',destination_tablespace => 'pg_default',index_destination_tablespace => 'pg_default',reorder_index => '_timescaledb_internal._hyper_1_4_chunk_netdata_time_idx');
您可以将数据块移动到较慢的表空间,但将数据块的索引保留在默认的、更快的表空间上
SELECT move_chunk(chunk => '_timescaledb_internal._hyper_1_4_chunk',destination_tablespace => 'history',index_destination_tablespace => 'pg_default',reorder_index => '_timescaledb_internal._hyper_1_4_chunk_netdata_time_idx');
您还可以将数据保留在 pg_default
中,但将索引移动到 history
。或者,您可以设置第三个表空间,名为 history_indexes
,然后将数据移动到 history
,将索引移动到 history_indexes
。
在 Timescale 2.0 及更高版本中,您可以将 move_chunk
与作业调度器框架结合使用。有关更多信息,请参阅作业部分。
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面