homework-jianmu/docs/zh/14-reference/03-taos-sql/22-meta.md

29 KiB
Raw Blame History

sidebar_label title description
元数据 元数据 Information_Schema 数据库中存储了系统中所有的元数据信息

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 数据字典中的表

:::info

  • 由于 SHOW 语句已经被开发者熟悉和广泛使用,所以它们仍然被保留。
  • 系统表中的一些列可能是关键字,在查询时需要使用转义符'`',例如查询数据库 test 有几个 VGROUP
   select `vgroups` from ins_databases where name = 'test';

:::

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

INS_DNODES

提供 dnode 的相关信息。也可以使用 SHOW DNODES 来查询这些信息。 SYSINFO 为 0 的用户不能查看此表。

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

INS_MNODES

提供 mnode 的相关信息。也可以使用 SHOW MNODES 来查询这些信息。 SYSINFO 为 0 的用户不能查看此表。

# 列名 数据类型 说明
1 id SMALLINT mnode id
2 endpoint BINARY(134) mnode 的地址
3 role BINARY(10) 当前角色
4 role_time TIMESTAMP 成为当前角色的时间
5 create_time TIMESTAMP 创建时间

INS_QNODES

当前系统中 QNODE 的信息。也可以使用 SHOW QNODES 来查询这些信息。SYSINFO 属性为 0 的用户不能查看此表。

# 列名 数据类型 说明
1 id SMALLINT qnode id
2 endpoint VARCHAR(134) qnode 的地址
3 create_time TIMESTAMP 创建时间

INS_SNODES

当前系统中 SNODE 的信息。也可以使用 SHOW SNODES 来查询这些信息。SYSINFO 属性为 0 的用户不能查看此表。

# 列名 数据类型 说明
1 id SMALLINT snode id
2 endpoint VARCHAR(134) snode 的地址
3 create_time TIMESTAMP 创建时间

INS_CLUSTER

存储集群相关信息。 SYSINFO 属性为 0 的用户不能查看此表。

# 列名 数据类型 说明
1 id BIGINT cluster id
2 name VARCHAR(134) 集群名称
3 create_time TIMESTAMP 创建时间

INS_DATABASES

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

# 列名 数据类型 说明
1 name VARCHAR(64) 数据库名
2 create_time TIMESTAMP 创建时间
3 ntables INT 数据库中表的数量,包含子表和普通表但不包含超级表
4 vgroups INT 数据库中有多少个 vgroup。需要注意vgroups 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
6 replica INT 副本数。需要注意,replica 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
7 strict VARCHAR(4) 废弃参数
8 duration VARCHAR(10) 单文件存储数据的时间跨度。需要注意,duration 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。内部存储单位为分钟,查询时有可能转换为天或小时展示
9 keep VARCHAR(32) 数据保留时长。需要注意,keep 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。 内部存储单位为分钟,查询时有可能转换为天或小时展示
10 buffer INT 每个 vnode 写缓存的内存块大小,单位 MB。需要注意buffer 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
11 pagesize INT 每个 VNODE 中元数据存储引擎的页大小,单位为 KB。需要注意pagesize 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
12 pages INT 每个 vnode 元数据存储引擎的缓存页个数。需要注意,pages 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
13 minrows INT 文件块中记录的最小条数。需要注意,minrows 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
14 maxrows INT 文件块中记录的最大条数。需要注意,maxrows 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
15 comp INT 数据压缩方式。需要注意,comp 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
16 precision VARCHAR(2) 时间分辨率。需要注意,precision 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
17 status VARCHAR(10) 数据库状态
18 retentions VARCHAR(60) 数据的聚合周期和保存时长。需要注意,retentions 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
19 single_stable BOOL 表示此数据库中是否只可以创建一个超级表。需要注意,single_stable 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
20 cachemodel VARCHAR(60) 表示是否在内存中缓存子表的最近数据。需要注意,cachemodel 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
21 cachesize INT 表示每个 vnode 中用于缓存子表最近数据的内存大小。需要注意,cachesize 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
22 wal_level INT WAL 级别。需要注意,wal_level 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
23 wal_fsync_period INT 数据落盘周期。需要注意,wal_fsync_period 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
24 wal_retention_period INT WAL 的保存时长,单位为秒。需要注意,wal_retention_period 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
25 wal_retention_size INT WAL 的保存上限。需要注意,wal_retention_size 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
26 stt_trigger SMALLINT 触发文件合并的落盘文件的个数。需要注意,stt_trigger 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
27 table_prefix SMALLINT 内部存储引擎根据表名分配存储该表数据的 VNODE 时要忽略的前缀的长度。需要注意,table_prefix 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
28 table_suffix SMALLINT 内部存储引擎根据表名分配存储该表数据的 VNODE 时要忽略的后缀的长度。需要注意,table_suffix 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
29 tsdb_pagesize INT 时序数据存储引擎中的页大小。需要注意,tsdb_pagesize 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。

INS_FUNCTIONS

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

# 列名 数据类型 说明
1 name VARCHAR(64) 函数名
2 comment VARCHAR(255) 补充说明。需要注意,comment 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
3 aggregate INT 是否为聚合函数。需要注意,aggregate 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
4 output_type VARCHAR(31) 输出类型
5 create_time TIMESTAMP 创建时间
6 code_len INT 代码长度
7 bufsize INT buffer 大小
8 func_language VARCHAR(31) 自定义函数编程语言
9 func_body VARCHAR(16384) 函数体定义
10 func_version INT 函数版本号。初始版本为0每次替换更新版本号加1。

INS_INDEXES

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

# 列名 数据类型 说明
1 db_name VARCHAR(32) 包含此索引的表所在的数据库名
2 table_name VARCHAR(192) 包含此索引的表的名称
3 index_name VARCHAR(192) 索引名
4 column_name VARCHAR(64) 建索引的列的列名
5 index_type VARCHAR(10) 目前有 SMA 和 tag
6 index_extensions VARCHAR(256) 索引的额外信息。对 SMA/tag 类型的索引,是函数名的列表。

INS_STABLES

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

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

INS_TABLES

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

# 列名 数据类型 说明
1 table_name VARCHAR(192) 表名
2 db_name VARCHAR(64) 数据库名
3 create_time TIMESTAMP 创建时间
4 columns INT 列数目
5 stable_name VARCHAR(192) 所属的超级表表名
6 uid BIGINT 表 id
7 vgroup_id INT vgroup id
8 ttl INT 表的生命周期。需要注意,ttl 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
9 table_comment VARCHAR(1024) 表注释
10 type VARCHAR(21) 表类型

INS_TAGS

# 列名 数据类型 说明
1 table_name VARCHAR(192) 表名
2 db_name VARCHAR(64) 该表所在的数据库的名称
3 stable_name VARCHAR(192) 所属的超级表表名
4 tag_name VARCHAR(64) tag 的名称
5 tag_type VARCHAR(64) tag 的类型
6 tag_value VARCHAR(16384) tag 的值

INS_COLUMNS

# 列名 数据类型 说明
1 table_name VARCHAR(192) 表名
2 db_name VARCHAR(64) 该表所在的数据库的名称
3 table_type VARCHAR(21) 表类型
4 col_name VARCHAR(64) 列 的名称
5 col_type VARCHAR(32) 列 的类型
6 col_length INT 列 的长度
7 col_precision INT 列 的精度
8 col_scale INT 列 的比例
9 col_nullable INT 列 是否可以为空

INS_USERS

提供系统中创建的用户的相关信息. SYSINFO 属性为0 的用户不能查看此表。

# 列名 数据类型 说明
1 name VARCHAR(24) 用户名
2 super TINYINT 用户是否为超级用户10
3 enable TINYINT 用户是否启用10
4 sysinfo TINYINT 用户是否可查看系统信息1是, 0
5 create_time TIMESTAMP 创建时间
6 allowed_host VARCHAR(49152) IP 白名单

INS_GRANTS

提供企业版授权的相关信息。SYSINFO 属性为 0 的用户不能查看此表。

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

INS_VGROUPS

系统中所有 vgroups 的信息。SYSINFO 属性为 0 的用户不能查看此表。

# 列名 数据类型 说明
1 vgroup_id INT vgroup id
2 db_name VARCHAR(32) 数据库名
3 tables INT 此 vgroup 内有多少表。需要注意,tables 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
4 status VARCHAR(10) 此 vgroup 的状态
5 v1_dnode INT 第一个成员所在的 dnode 的 id
6 v1_status VARCHAR(10) 第一个成员的状态
7 v2_dnode INT 第二个成员所在的 dnode 的 id
8 v2_status VARCHAR(10) 第二个成员的状态
9 v3_dnode INT 第三个成员所在的 dnode 的 id
10 v3_status VARCHAR(10) 第三个成员的状态
11 nfiles INT 此 vgroup 中数据/元数据文件的数量
12 file_size INT 此 vgroup 中数据/元数据文件的大小
13 tsma TINYINT 此 vgroup 是否专用于 Time-range-wise SMA1: 是, 0: 否

INS_CONFIGS

系统配置参数。

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

INS_DNODE_VARIABLES

系统中每个 dnode 的配置参数。SYSINFO 属性 为 0 的用户不能查看此表。

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

INS_TOPICS

# 列名 数据类型 说明
1 topic_name VARCHAR(192) topic 名称
2 db_name VARCHAR(64) topic 相关的 DB
3 create_time TIMESTAMP topic 的 创建时间
4 sql VARCHAR(1024) 创建该 topic 时所用的 SQL 语句

INS_SUBSCRIPTIONS

# 列名 数据类型 说明
1 topic_name VARCHAR(204) 被订阅的 topic
2 consumer_group VARCHAR(193) 订阅者的消费者组
3 vgroup_id INT 消费者被分配的 vgroup id
4 consumer_id BIGINT 消费者的唯一 id
5 user VARCHAR(24) 消费者的登录的用户名
6 fqdn VARCHAR(128) 消费者的所在机器的 fqdn
7 offset VARCHAR(64) 消费者的消费进度
8 rows BIGINT 消费者的消费的数据条数

INS_STREAMS

# 列名 数据类型 说明
1 stream_name VARCHAR(64) 流计算名称
2 create_time TIMESTAMP 创建时间
3 sql VARCHAR(1024) 创建流计算时提供的 SQL 语句
4 status VARCHAR(20) 流当前状态
5 source_db VARCHAR(64) 源数据库
6 target_db VARCHAR(64) 目的数据库
7 target_table VARCHAR(192) 流计算写入的目标表
8 watermark BIGINT watermark详见 SQL 手册流式计算。需要注意,watermark 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。
9 trigger INT 计算结果推送模式,详见 SQL 手册流式计算。需要注意,trigger 为 TDengine 关键字,作为列名使用时需要使用 ` 进行转义。

INS_USER_PRIVILEGES

SYSINFO 属性为 0 的用户不能查看此表。

# 列名 数据类型 说明
1 user_name VARCHAR(24) 用户名
2 privilege VARCHAR(10) 权限描述
3 db_name VARCHAR(65) 数据库名称
4 table_name VARCHAR(193) 表名称
5 condition VARCHAR(49152) 子表权限过滤条件