元数据

TDengine 内置了一个名为 INFORMATION_SCHEMA 的数据库,提供对数据库元数据、数据库系统信息和状态的访问,例如数据库或表的名称,当前执行的 SQL 语句等。该数据库存储有关 TDengine 维护的所有其他数据库的信息。它包含多个只读表。实际上,这些表都是视图,而不是基表,因此没有与它们关联的文件。所以对这些表只能查询,不能进行 INSERT 等写入操作。INFORMATION_SCHEMA 数据库旨在以一种更一致的方式来提供对 TDengine 支持的各种 SHOW 语句(如 SHOW TABLES、SHOW DATABASES)所提供的信息的访问。与 SHOW 语句相比,使用 SELECT … FROM INFORMATION_SCHEMA.tablename 具有以下优点:

  1. 可以使用 USE 语句将 INFORMATION_SCHEMA 设为默认数据库
  2. 可以使用 SELECT 语句熟悉的语法,只需要学习一些表名和列名
  3. 可以对查询结果进行筛选、排序等操作。事实上,可以使用任意 TDengine 支持的 SELECT 语句对 INFORMATION_SCHEMA 中的表进行查询
  4. TDengine 在后续演进中可以灵活的添加已有 INFORMATION_SCHEMA 中表的列,而不用担心对既有业务系统造成影响
  5. 与其他数据库系统更具互操作性。例如,Oracle 数据库用户熟悉查询 Oracle 数据字典中的表
元数据 - 图1info
  • 由于 SHOW 语句已经被开发者熟悉和广泛使用,所以它们仍然被保留。
  • 系统表中的一些列可能是关键字,在查询时需要使用转义符’`‘,例如查询数据库 test 有几个 VGROUP:
  1. select `vgroups` from ins_databases where name = 'test';

本章将详细介绍 INFORMATION_SCHEMA 这个内置元数据库中的表和表结构。

INS_DNODES

提供 dnode 的相关信息。也可以使用 SHOW DNODES 来查询这些信息。

#列名数据类型说明
1vnodesSMALLINTdnode 中的实际 vnode 个数。需要注意,vnodes 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
2support_vnodesSMALLINT最多支持的 vnode 个数
3statusBINARY(10)当前状态
4noteBINARY(256)离线原因等信息
5idSMALLINTdnode id
6endpointBINARY(134)dnode 的地址
7createTIMESTAMP创建时间

INS_MNODES

提供 mnode 的相关信息。也可以使用 SHOW MNODES 来查询这些信息。

#列名数据类型说明
1idSMALLINTmnode id
2endpointBINARY(134)mnode 的地址
3roleBINARY(10)当前角色
4role_timeTIMESTAMP成为当前角色的时间
5create_timeTIMESTAMP创建时间

INS_QNODES

当前系统中 QNODE 的信息。也可以使用 SHOW QNODES 来查询这些信息。

#列名数据类型说明
1idSMALLINTqnode id
2endpointBINARY(134)qnode 的地址
3create_timeTIMESTAMP创建时间

INS_CLUSTER

存储集群相关信息。

#列名数据类型说明
1idBIGINTcluster id
2nameBINARY(134)集群名称
3create_timeTIMESTAMP创建时间

INS_DATABASES

提供用户创建的数据库对象的相关信息。也可以使用 SHOW DATABASES 来查询这些信息。

#列名数据类型说明
1nameBINARY(32)数据库名
2create_timeTIMESTAMP创建时间
3ntablesINT数据库中表的数量,包含子表和普通表但不包含超级表
4vgroupsINT数据库中有多少个 vgroup。需要注意,vgroups 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>6</td><td>replica</td><td>INT</td><td>副本数。需要注意,<code>replica</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
7strictBINARY(3)强一致性。需要注意,strict 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>8</td><td>duration</td><td>INT</td><td>单文件存储数据的时间跨度。需要注意,<code>duration</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
9keepINT数据保留时长。需要注意,keep 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>10</td><td>buffer</td><td>INT</td><td>每个 vnode 写缓存的内存块大小,单位 MB。需要注意,<code>buffer</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
11pagesizeINT每个 VNODE 中元数据存储引擎的页大小,单位为 KB。需要注意,pagesize 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>12</td><td>pages</td><td>INT</td><td>每个 vnode 元数据存储引擎的缓存页个数。需要注意,<code>pages</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
13minrowsINT文件块中记录的最大条数。需要注意,minrows 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>14</td><td>maxrows</td><td>INT</td><td>文件块中记录的最小条数。需要注意,<code>maxrows</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
15compINT数据压缩方式。需要注意,comp 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>16</td><td>precision</td><td>BINARY(2)</td><td>时间分辨率。需要注意,<code>precision</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
17statusBINARY(10)数据库状态
18retentionsBINARY (60)数据的聚合周期和保存时长。需要注意,retentions 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>19</td><td>single_stable</td><td>BOOL</td><td>表示此数据库中是否只可以创建一个超级表。需要注意,<code>single_stable</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
20cachemodelBINARY(60)表示是否在内存中缓存子表的最近数据。需要注意,cachemodel 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>21</td><td>cachesize</td><td>INT</td><td>表示每个 vnode 中用于缓存子表最近数据的内存大小。需要注意,<code>cachesize</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
22wal_levelINTWAL 级别。需要注意,wal_level 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>23</td><td>wal_fsync_period</td><td>INT</td><td>数据落盘周期。需要注意,<code>wal_fsync_period</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
24wal_retention_periodINTWAL 的保存时长。需要注意,wal_retention_period 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>25</td><td>wal_retention_size</td><td>INT</td><td>WAL 的保存上限。需要注意,<code>wal_retention_size</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
26wal_roll_periodINTwal 文件切换时长。需要注意,wal_roll_period 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>27</td><td>wal_segment_size</td><td>BIGINT</td><td>wal 单个文件大小。需要注意,<code>wal_segment_size</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
28stt_triggerSMALLINT触发文件合并的落盘文件的个数。需要注意,stt_trigger 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>29</td><td>table_prefix</td><td>SMALLINT</td><td>内部存储引擎根据表名分配存储该表数据的 VNODE 时要忽略的前缀的长度。需要注意,<code>table_prefix</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
30table_suffixSMALLINT内部存储引擎根据表名分配存储该表数据的 VNODE 时要忽略的后缀的长度。需要注意,table_suffix 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>31</td><td>tsdb_pagesize</td><td>INT</td><td>时序数据存储引擎中的页大小。需要注意,<code>tsdb_pagesize</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。

INS_FUNCTIONS

用户创建的自定义函数的信息。

#列名数据类型说明
1nameBINARY(64)函数名
2commentBINARY(255)补充说明。需要注意,comment 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>3</td><td>aggregate</td><td>INT</td><td>是否为聚合函数。需要注意,<code>aggregate</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
4output_typeBINARY(31)输出类型
5create_timeTIMESTAMP创建时间
6code_lenINT代码长度
7bufsizeINTbuffer 大小

INS_INDEXES

提供用户创建的索引的相关信息。也可以使用 SHOW INDEX 来查询这些信息。

#列名数据类型说明
1db_nameBINARY(32)包含此索引的表所在的数据库名
2table_nameBINARY(192)包含此索引的表的名称
3index_nameBINARY(192)索引名
4column_nameBINARY(64)建索引的列的列名
5index_typeBINARY(10)目前有 SMA 和 FULLTEXT
6index_extensionsBINARY(256)索引的额外信息。对 SMA 类型的索引,是函数名的列表。对 FULLTEXT 类型的索引为 NULL。

INS_STABLES

提供用户创建的超级表的相关信息。

#列名数据类型说明
1stable_nameBINARY(192)超级表表名
2db_nameBINARY(64)超级表所在的数据库的名称
3create_timeTIMESTAMP创建时间
4columnsINT列数目
5tagsINT标签数目。需要注意,tags 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>6</td><td>last_update</td><td>TIMESTAMP</td><td>最后更新时间</td></tr><tr><td>7</td><td>table_comment</td><td>BINARY(1024)</td><td>表注释</td></tr><tr><td>8</td><td>watermark</td><td>BINARY(64)</td><td>窗口的关闭时间。需要注意,<code>watermark</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
9max_delayBINARY(64)推送计算结果的最大延迟。需要注意,max_delay 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>10</td><td>rollup</td><td>BINARY(128)</td><td>rollup 聚合函数。需要注意,<code>rollup</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。

INS_TABLES

提供用户创建的普通表和子表的相关信息

#列名数据类型说明
1table_nameBINARY(192)表名
2db_nameBINARY(64)数据库名
3create_timeTIMESTAMP创建时间
4columnsINT列数目
5stable_nameBINARY(192)所属的超级表表名
6uidBIGINT表 id
7vgroup_idINTvgroup id
8ttlINT表的生命周期。需要注意,ttl 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
9table_commentBINARY(1024)表注释
10typeBINARY(21)表类型

INS_TAGS

#列名数据类型说明
1table_nameBINARY(192)表名
2db_nameBINARY(64)该表所在的数据库的名称
3stable_nameBINARY(192)所属的超级表表名
4tag_nameBINARY(64)tag 的名称
5tag_typeBINARY(64)tag 的类型
6tag_valueBINARY(16384)tag 的值

INS_COLUMNS

#列名数据类型说明
1table_nameBINARY(192)表名
2db_nameBINARY(64)该表所在的数据库的名称
3table_typeBINARY(21)表类型
4col_nameBINARY(64)列 的名称
5col_typeBINARY(32)列 的类型
6col_lengthINT列 的长度
7col_precisionINT列 的精度
8col_scaleINT列 的比例
9col_nullableINT列 是否可以为空

INS_USERS

提供系统中创建的用户的相关信息。

#列名数据类型说明
1user_nameBINARY(23)用户名
2privilegeBINARY(256)权限
3create_timeTIMESTAMP创建时间

INS_GRANTS

提供企业版授权的相关信息。

#列名数据类型说明
1versionBINARY(9)企业版授权说明:official(官方授权的)/trial(试用的)
2cpu_coresBINARY(9)授权使用的 CPU 核心数量
3dnodesBINARY(10)授权使用的 dnode 节点数量。需要注意,dnodes 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>4</td><td>streams</td><td>BINARY(10)</td><td>授权创建的流数量。需要注意,<code>streams</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
5usersBINARY(10)授权创建的用户数量。需要注意,users 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>6</td><td>accounts</td><td>BINARY(10)</td><td>授权创建的帐户数量。需要注意,<code>accounts</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
7storageBINARY(21)授权使用的存储空间大小。需要注意,storage 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>8</td><td>connections</td><td>BINARY(21)</td><td>授权使用的客户端连接数量。需要注意,<code>connections</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。
9databasesBINARY(11)授权使用的数据库数量。需要注意,databases 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
10speedBINARY(9)授权使用的数据点每秒写入数量
11querytimeBINARY(9)授权使用的查询总时长
12timeseriesBINARY(21)授权使用的测点数量
13expiredBINARY(5)是否到期,true:到期,false:未到期
14expire_timeBINARY(19)试用期到期时间

INS_VGROUPS

系统中所有 vgroups 的信息。

#列名数据类型说明
1vgroup_idINTvgroup id
2db_nameBINARY(32)数据库名
3tablesINT此 vgroup 内有多少表。需要注意,tables 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
4statusBINARY(10)此 vgroup 的状态
5v1_dnodeINT第一个成员所在的 dnode 的 id
6v1_statusBINARY(10)第一个成员的状态
7v2_dnodeINT第二个成员所在的 dnode 的 id
8v2_statusBINARY(10)第二个成员的状态
9v3_dnodeINT第三个成员所在的 dnode 的 id
10v3_statusBINARY(10)第三个成员的状态
11nfilesINT此 vgroup 中数据/元数据文件的数量
12file_sizeINT此 vgroup 中数据/元数据文件的大小
13tsmaTINYINT此 vgroup 是否专用于 Time-range-wise SMA,1: 是, 0: 否

INS_CONFIGS

系统配置参数。

#列名数据类型说明
1nameBINARY(32)配置项名称
2valueBINARY(64)该配置项的值。需要注意,value 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。

INS_DNODE_VARIABLES

系统中每个 dnode 的配置参数。

#列名数据类型说明
1dnode_idINTdnode 的 ID
2nameBINARY(32)配置项名称
3valueBINARY(64)该配置项的值。需要注意,value 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。

INS_TOPICS

#列名数据类型说明
1topic_nameBINARY(192)topic 名称
2db_nameBINARY(64)topic 相关的 DB
3create_timeTIMESTAMPtopic 的 创建时间
4sqlBINARY(1024)创建该 topic 时所用的 SQL 语句

INS_SUBSCRIPTIONS

#列名数据类型说明
1topic_nameBINARY(204)被订阅的 topic
2consumer_groupBINARY(193)订阅者的消费者组
3vgroup_idINT消费者被分配的 vgroup id
4consumer_idBIGINT消费者的唯一 id

INS_STREAMS

#列名数据类型说明
1stream_nameBINARY(64)流计算名称
2create_timeTIMESTAMP创建时间
3sqlBINARY(1024)创建流计算时提供的 SQL 语句
4statusBINARY(20)流当前状态
5source_dbBINARY(64)源数据库
6target_dbBINARY(64)目的数据库
7target_tableBINARY(192)流计算写入的目标表
8watermarkBIGINTwatermark,详见 SQL 手册流式计算。需要注意,watermark 为 TDengine 关键字,作为列名使用时需要使用 进行转义。</td></tr><tr><td>9</td><td>trigger</td><td>INT</td><td>计算结果推送模式,详见 SQL 手册流式计算。需要注意,<code>trigger</code> 为 TDengine 关键字,作为列名使用时需要使用 进行转义。