的dict_obj_tree
表提供了表信息的树状视图dict_obj_info
表格这主要用于测试,但在可视化的层次结构时也很有用NDB
数据库对象。
的dict_obj_tree
表包含以下列:
类型
类型的
DICT
对象;加入在dict_obj_types
获取对象类型的名称id
对象标识符;和
id
列dict_obj_info
对于磁盘数据撤消日志文件和数据文件,该值与
LOGFILE_GROUP_NUMBER
的列INFORMATION_SCHEMA。文件
表;对于undo日志文件,它也与log_id
ndbinfo中的列logbuffers
而且logspaces
表的名字
对象的完全限定名;和
fq_name
列dict_obj_info
对于一张表,这是
(与其相同database_name
/ def /table_name
parent_name
);对于任何类型的索引,都采用以下形式NDB INDEX_美元
index_id
_CUSTOMparent_type
的
DICT
该对象的父对象的对象类型;加入在dict_obj_types
获取对象类型的名称parent_id
该对象的父对象的标识符;和
dict_obj_info
表的id
列parent_name
该对象的父对象的完全限定名称;和
dict_obj_info
表的fq_name
列对于表格来说,它具有这样的形式
.对于索引,名称为database_name
/ def /table_name
sys / def /
.对于主键,它是table_id
/index_name
sys / def /
,对于唯一键,则为table_id
/主sys / def /
table_id
/uk_name
独特的美元root_type
的
DICT
根对象的对象类型;加入在dict_obj_types
获取对象类型的名称root_id
根对象的标识符;和
dict_obj_info
表的id
列root_name
根对象的完全限定名称;和
dict_obj_info
表的fq_name
列水平
对象在层次结构中的级别
路径
对象的完整路径
NDB
对象层次结构;对象由右箭头分隔(表示为->
),从左边的根对象开始indented_name
的
的名字
以右箭头作为前缀(表示为->
),在它前面有一些空格,这些空格对应于对象在层次结构中的深度
的路径
列对于获取给定对象的完整路径非常有用NDB
对象在单行中显示,而indented_name
列可用于获取所需对象的完整层次结构信息的树状布局。
例子:假设存在一个测验
数据库中没有已命名的表t1
在此数据库中,执行以下SQL语句:
创建表测试。t1( a INT PRIMARY KEY, b INT, UNIQUE KEY(b) ) ENGINE = NDB;
你可以通过下面的查询获取刚刚创建的表的路径:
mysql> SELECT path FROM ndbinfo。dict_obj_tree->WHERE name LIKE 'test%t1'; +-------------+ | path | +-------------+ | test/def/t1 | +-------------+ 1 row in set (0.14 sec)
在这样的查询中,你可以使用表的路径作为根名称来查看该表的所有依赖对象的路径:
mysql> SELECT path FROM ndbinfo。dict_obj_tree->WHERE root_name = 'test/def/t1'; +----------------------------------------------------------+ | path | +----------------------------------------------------------+ | test/def/t1 | | test/def/t1 -> sys/def/13/b | | test/def/t1 -> sys/def/13/b -> NDB$INDEX_15_CUSTOM | | test/def/t1 -> sys/def/13/b$unique | | test/def/t1 -> sys/def/13/b$unique -> NDB$INDEX_16_UI | | test/def/t1 -> sys/def/13/PRIMARY | | test/def/t1 -> sys/def/13/PRIMARY -> NDB$INDEX_14_CUSTOM | +----------------------------------------------------------+ 7 rows in set (0.16 sec)
控件的分层视图t1
表及其所有依赖对象,执行类似于此查询,选择每个对象的缩进名称测试/ def / t1
作为其根对象的名称:
SELECT indented_name FROM ndbinfodict_obj_tree->WHERE root_name = 'test/def/t1'; +----------------------------+ | indented_name | +----------------------------+ | test/def/t1 | | -> sys/def/13/b | | -> NDB$INDEX_15_CUSTOM | | -> sys/def/13/b$unique | | -> NDB$INDEX_16_UI | | -> sys/def/13/PRIMARY | | -> NDB$INDEX_14_CUSTOM | +----------------------------+ 7 rows in set (0.15 sec)
在使用Disk Data表时,请注意,在这种情况下,表空间或日志文件组被视为根对象。这意味着您必须知道与给定表相关联的任何表空间或日志文件组的名称,或者从其中获取此信息显示创建表
然后是查询INFORMATION_SCHEMA。文件
,或类似方式如下图所示:
mysql>创建表dt_1\G ***************************行***************************表:dt_1创建表:创建表' dt_1 ' (' member_id ' int unsigned NOT NULL AUTO_INCREMENT, ' last_name ' varchar(50) NOT NULL, ' first_name ' varchar(50) NOT NULL, ' dob ' date NOT NULL, ' joined ' date NOT NULL,主键(' member_id '),键' last_name ' (' last_name ', ' first_name ')) /*!50100表空间' ts_1 ' STORAGE DISK */ ENGINE=ndbcluster DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 1 row in set (0.00 sec) mysql> SELECT DISTINCT TABLESPACE_NAME, LOGFILE_GROUP_NAME -> FROM INFORMATION_SCHEMA。WHERE TABLESPACE_NAME='ts_1';+-----------------+--------------------+ | TABLESPACE_NAME | LOGFILE_GROUP_NAME | +-----------------+--------------------+ | ts_1 | lg_1 | +-----------------+--------------------+ 1行集(0.00秒)
现在你可以像这样获取表、表空间和日志文件组的层次结构信息:
SELECT indented_name FROM ndbinfodict_obj_tree->WHERE root_name = 'test/def/dt_1'; +----------------------------+ | indented_name | +----------------------------+ | test/def/dt_1 | | -> sys/def/23/last_name | | -> NDB$INDEX_25_CUSTOM | | -> sys/def/23/PRIMARY | | -> NDB$INDEX_24_CUSTOM | +----------------------------+ 5 rows in set (0.15 sec) mysql> SELECT indented_name FROM ndbinfo.dict_obj_tree -> WHERE root_name = 'ts_1'; +-----------------+ | indented_name | +-----------------+ | ts_1 | | -> data_1.dat | | -> data_2.dat | +-----------------+ 3 rows in set (0.17 sec) mysql> SELECT indented_name FROM ndbinfo.dict_obj_tree -> WHERE root_name LIKE 'lg_1'; +-----------------+ | indented_name | +-----------------+ | lg_1 | | -> undo_1.log | | -> undo_2.log | +-----------------+ 3 rows in set (0.16 sec)
的dict_obj_tree
表为NDB 8.0.24新增。