Timescale Cloud:性能、规模、企业级

自托管产品

MST

CREATE INDEX ... WITH (timescaledb.transaction_per_chunk, ...);

此选项扩展了 CREATE INDEX,使其能够在创建索引时为每个分块使用单独的事务,而不是为整个超表使用单个事务。这允许在 CREATE INDEX 命令执行的大部分时间里,INSERT 和其他操作可以并发执行。当在单个分块上创建索引时,它会像在该分块上调用常规的 CREATE INDEX 一样运行,但其他分块则完全不受阻塞。

此版本的 CREATE INDEX 可用作 CREATE INDEX CONCURRENTLY 的替代方案,目前超表不支持 CREATE INDEX CONCURRENTLY

警告
  • 不支持 CREATE UNIQUE INDEX

  • 如果操作中途失败,可能不会在所有超表分块上创建索引。如果发生这种情况,超表根表上的索引将被标记为无效。您可以通过对超表运行 \d+ 来检查。索引仍然有效,并会在新分块上创建,但如果您想确保所有分块都有索引副本,请删除并重新创建它。

    您还可以使用以下查询查找所有无效索引

    SELECT * FROM pg_index i WHERE i.indisvalid IS FALSE;

创建匿名索引

CREATE INDEX ON conditions(time, device_id)
WITH (timescaledb.transaction_per_chunk);

或者

CREATE INDEX ON conditions USING brin(time, location)
WITH (timescaledb.transaction_per_chunk);

关键词

在此页面上发现问题?报告问题 或 编辑此页面 在 GitHub 上。