Timescale Cloud:性能、扩展、企业级

自托管产品

MST

创建一个基于单个维度分区的超表,并启用列式存储,或创建标准的 PostgreSQL 关系表。

超表是一种特殊的 PostgreSQL 表,它根据时间自动对数据进行分区。所有适用于 PostgreSQL 表的操作都适用于超表。例如,ALTER TABLESELECT" width="16" height="16" class="inline m-0 ml-1">

超表到超表的外键是不允许的,所有其他组合都是允许的。

随着数据逐渐冷却并更适合分析,添加列式存储策略,以便您的数据在特定时间间隔后自动转换为列式存储。这种列式格式可实现快速扫描和聚合,优化分析工作负载的性能,同时节省大量存储空间。在列式存储转换中,超表分块的压缩率超过 90%,并经过组织以实现高效的大规模查询。这种列式格式可实现快速扫描和聚合,优化分析工作负载的性能。您还可以手动将超表中的分块转换为列式存储

默认情况下,超表是按时间维度分区的。要向超表添加次要维度,请调用 add_dimension

要将现有关系表转换为超表,请调用 create_hypertable

CREATE TABLE 扩展了标准 PostgreSQL 的 CREATE TABLE" width="16" height="16" class="inline m-0 ml-1"> 命令。本页面解释了 TimescaleDB 特有的功能和参数。

TimescaleDB v2.20.0
  • 创建一个按时间维度分区并启用列式存储的超表

    1. 创建超表

      CREATE TABLE crypto_ticks (
      "time" TIMESTAMPTZ,
      symbol TEXT,
      price DOUBLE PRECISION,
      day_volume NUMERIC
      ) WITH (
      tsdb.hypertable,
      tsdb.partition_column='time',
      tsdb.segmentby='symbol',
      tsdb.orderby='time DESC'
      );
    2. 通过添加列式存储策略启用 Hypercore

      CALL add_columnstore_policy('crypto_ticks', after => INTERVAL '1d');
  • 创建一个按时间分区、基于时间间隔减少分块数量的超表

    CREATE TABLE IF NOT EXISTS hypertable_control_chunk_interval(
    time int4 NOT NULL,
    device text,
    value float
    ) WITH (
    tsdb.hypertable,
    tsdb.partition_column='time',
    tsdb.chunk_interval=3453
    );
  • 创建 PostgreSQL 关系表

    CREATE TABLE IF NOT EXISTS relational_table(
    device text,
    value float
    );

语法是

CREATE TABLE <table_name> (
-- Standard PostgreSQL syntax for CREATE TABLE
)
WITH (
tsdb.hypertable = true | false
tsdb.partition_column = '<column_name> ',
tsdb.chunk_interval = '<interval>'
tsdb.create_default_indexes = true | false
tsdb.associated_schema = '<schema_name>',
tsdb.associated_table_prefix = '<prefix>'
tsdb.orderby = '<column_name> [ASC | DESC] [ NULLS { FIRST | LAST } ] [, ...]',
tsdb.segmentby = '<column_name> [, ...]',
)
名称类型默认值必需描述
tsdb.hypertableBOOLEANtrue为时序数据创建一个新的超表,而不是一个标准的 PostgreSQL 关系表。
tsdb.partition_columnTEXTtrue设置时间列以自动分区您的时序数据。
tsdb.chunk_intervalTEXT7 天更改此值以更好地满足您的需求。例如,如果您将 chunk_interval 设置为 1 天,则每个分块存储同一天的数据。不同天的数据存储在不同的分块中。
tsdb.create_default_indexesBOOLEANtrue设置为 false 则不自动创建索引。
默认索引包括
  • 在所有超表上,在 partition_column 上创建降序索引
  • 在带有空间分区的超表上,在空间参数和 partition_column 上创建索引
tsdb.associated_schemaREGCLASS_timescaledb_internal设置内部超表表的模式名称。
tsdb.associated_table_prefixTEXT_hyper设置内部超表分块名称的前缀。
tsdb.orderbyTEXTtable_name 中时间列的降序。列式存储中使用项目的顺序。以与 SELECT 查询中的 ORDER BY 子句相同的方式指定。
tsdb.segmentbyTEXT不按列分段。设置用于在 table 的列式存储中分段数据的列列表。通常,表示数据源的标识符(例如 device_idtags_id)是一个很好的选择。

TimescaleDB 返回一条简单的消息,指示成功或失败。

关键词