文档首页 > > 开发指南> 时序引擎> 时序语法>

CREATE TABLE

CREATE TABLE

分享
更新时间:2021/04/07 GMT+08:00

功能描述

时序引擎提供创建时序表DDL语句。创建时序表DDL需要提供时序表基于Key Value存储所需的维度属性(tstag)、指标属性(tsfield)以及时间(tstime)属性的相关信息。同时作为时序数据库,允许指明数据的生命周期TTL(Time To Live)以及分区创建时间周期(Period)来提供自动分区创建和自动分区淘汰的能力。创建时序表需要将orientation属性设置为timeseries。对于分布列的设置支持用户显示指定分布列;在不指定显式指定分布列时,时序表默认将所有tag类型的列设置为分布列,部分列类型不支持指定为分布列,此种列类型将会被排除出分布列,若tag表的所有列均不支持作为分布列,则报错。后续将不支持tag上的删除操作,但提供一种方法通过使用“DISTRIBUTE BY HIDETAG”方式,无需指定具体的分布列,可以创建支持删除任意tag列的时序表,但这种方式仅建议使用在不会使用join或者group操作或者对这种类型操作没有很高要求的场景下。

在小批量插入场景下(单次插入数据条数少于100),开启时序delta表有助于提升时序引擎性能。

注意事项

  • 创建时序表的用户需要有schema cstore的USAGE权限。
  • 时序表的所有属性除时间属性必须指明是维度还是指标。
  • 时序表默认自动创建为分区表,并且按照所有维度分布,支持按照指定的属性分布。
  • 时序表必须指定一个时间属性(tstime),且只能指定一个。创建表语句若除时间列外所有属性指定为tstag,存储方式自动转为行存。创建表语句若除时间列外所有属性指定为tsfield,存储方式自动转为列存。
  • 创建表语句如果用户指定TTL或者Period,自动创建对应的时序分区管理任务。如果不指定,则默认无TTL,Period默认为1天。指定TTL不能超过100年,指定Period不小于1小时且不大于TTL。
  • 如果显示地指定partition by分区键,只允许使用时间列作为分区键。

语法格式

时序表支持的创建表语法格式为标准创建表语法格式的简化形式。新增属性列的kv_type属性,存储参数storage_parameter新增支持TTL和Period参数,同时orientation参数新增支持timeseries值。

用户可以通过storage_parameter的四个参数控制时序delta表的开关和相关配置。具体见下方说明。

CREATE TABLE [ IF NOT EXISTS ] table_name
({ column_name data_type [ kv_type ] }
[, ... ])
[ WITH ( {storage_parameter = value}  [, ... ] ) ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS } ]
[ TABLESPACE tablespace_name ]
[ DISTRIBUTE BY  HASH ( column_name [,...] | hidetag )]
[ TO { GROUP groupname | NODE ( nodename [, ... ] ) } ]
[ table_partitioning_clauses ];
  • 其中属性列的kv_type 包括 tstag,tsfield,tstime,以及tshide四种类型。Tstag和tsfield分别对应Key Value存储中的维度属性和指标属性, tstime对应时间属性,tshide用户标识隐藏分布列属性,仅供内部实现使用,不对用户开放。
  • TTL(Time To Live)指明该表的数据保存周期,超过TTL周期的数据将被清理。Period指明按照时间划分的周期对数据进行分区,分区的大小可能对查询性能有影响,同时每隔周期时间会创建一个新的周期大小的分区。TTL和Period值为Interval类型,例如:“1 hour”, “1 day”, “1 week”, “1 month” ,“1 year”, “1 month 2 day 3 hour”...
  • Storage_parameter存储参数中的orientation指明是否为时序存储方式,只有当orientation为timeseries时存储方式才支持Key Value存储。
  • 时序表不需要手动指定distribute by和table_partitioning_clauses, 默认按照所有维度分布,同时自动创建分区表。
  • 时序delta表相关storage_parameter:
    1. enable_tsdb_delta:控制该时序表是否启用delta表功能。默认为off。
    2. tsdb_deltainsert_threshold:每台DN单次插入时序delta表的数据量阈值。默认为5000,最小值100,最大值60000。
    3. tsdb_deltamerge_threshold:每台DN执行deltamerge写回时的数据量阈值,若delta表内数据量小于此值,写回不会发生。默认为60000,最小值0,最大值1000000。
    4. tsdb_deltamerge_interval:自动写回定时任务的时间间隔,单位为分钟。默认为5,最小为1,最大为1440。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
--创建简单的时序表。
CREATE TABLE CPU(
idle numeric TSField,
IO numeric TSField,
scope text TSTag,
IP text TSTag,
time timestamp TSTime
) with (TTL='7 days', PERIOD = '1 day', orientation=TIMESERIES);

-- 创建带有delta表的时序表
CREATE TABLE CPU(
idle numeric TSField,
IO numeric TSField,
scope text TSTag,
IP text TSTag,
time timestamp TSTime
) with (
enable_tsdb_delta=on,
tsdb_deltainsert_threshold=10000,
tsdb_deltamerge_threshold=1000,
tsdb_deltamerge_interval=3,
TTL='7 days',
PERIOD = '1 day',
orientation=TIMESERIES);
分享:

    相关文档

    相关产品