25.6.17.26 Таблица ndbinfo dict_obj_tree
Таблица dict_obj_tree предоставляет представление в виде дерева информации о таблицах из таблицы dict_obj_info. Она предназначена в первую очередь для использования в тестировании, но может быть полезна для визуализации иерархии NDB баз данных.
Таблица dict_obj_tree содержит следующие столбцы:
-
typeТип объекта
DICT; для получения имени типа объекта используйте объединение с таблицейdict_obj_types -
idИдентификатор объекта; совпадает со столбцом
idв таблицеdict_obj_infoДля файлов журналов отката и данных диска, значение равно значению в столбце
LOGFILE_GROUP_NUMBERтаблицы Информационной СхемыFILES; для файлов журналов отката, также совпадает со значением в столбцеlog_idв таблицах ndbinfologbuffersиlogspaces -
nameПолное имя объекта; совпадает со столбцом
fq_nameв таблицеdict_obj_infoДля таблицы, это
(то же, что иdatabase_name/def/table_nameparent_name); для индекса любого типа, это имеет видNDB$INDEX_index_id_CUSTOM -
parent_typeТип объекта
DICTродительского объекта этого объекта; для получения имени типа объекта используйте объединение с таблицейdict_obj_types -
parent_idИдентификатор родительского объекта этого объекта; совпадает со столбцом
idтаблицыdict_obj_info -
parent_nameПолное имя родительского объекта этого объекта; совпадает со столбцом
fq_nameтаблицыdict_obj_infoДля таблицы, этот формат
. Для индекса, имя имеет видdatabase_name/def/table_namesys/def/. Для первичного ключа —table_id/index_namesys/def/, а для уникального ключа —table_id/PRIMARYsys/def/table_id/uk_name$unique -
root_typeТип объекта
DICTкорневого объекта; для получения имени типа объекта используйте объединение с таблицейdict_obj_types -
root_idИдентификатор корневого объекта; совпадает со столбцом
idтаблицыdict_obj_info -
root_nameПолное имя корневого объекта; совпадает со столбцом
fq_nameтаблицыdict_obj_info -
levelУровень объекта в иерархии
-
pathПолный путь к объекту в иерархии
NDBобъектов; объекты разделены правой стрелкой (представлено как->), начиная с корневого объекта слева -
indented_nameИмя объекта, префикс которого предваряется правой стрелкой (представлено как
->) с количеством пробелов, соответствующим глубине объекта в иерархии
Столбец path полезен для получения полного пути к заданному объекту базы данных NDB в одной строке, тогда как столбец indented_name может использоваться для получения древовидного представления полной иерархической информации для нужного объекта.
Пример: Предполагая существование базы данных test и отсутствие таблицы с именем t1 в этой базе данных, выполните следующую SQL-команду:
CREATE TABLE test.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 со всеми ее зависимыми объектами, выполните запрос, подобный этому, который выбирает отступы имени каждого объекта, имеющего test/def/t1 в качестве имени своего корневого объекта:
mysql> SELECT indented_name FROM ndbinfo.dict_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 обратите внимание, что в данном контексте табличное пространство или группа файлов журнала считаются корневыми объектами. Это означает, что вам необходимо знать имя любого табличного пространства или группы файлов журнала, связанного с данной таблицей, или получить эту информацию из SHOW CREATE TABLE и затем запросить INFORMATION_SCHEMA.FILES, или аналогичным способом, как показано здесь:
mysql> SHOW CREATE TABLE test.dt_1\G
*************************** 1. row ***************************
Table: dt_1
Create Table: CREATE TABLE `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,
PRIMARY KEY (`member_id`),
KEY `last_name` (`last_name`,`first_name`)
) /*!50100 TABLESPACE `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.FILES WHERE TABLESPACE_NAME='ts_1';
+-----------------+--------------------+
| TABLESPACE_NAME | LOGFILE_GROUP_NAME |
+-----------------+--------------------+
| ts_1 | lg_1 |
+-----------------+--------------------+
1 row in set (0.00 sec)
Теперь вы можете получить иерархическую информацию для таблицы, табличного пространства и группы файлов журнала следующим образом:
mysql> SELECT indented_name FROM ndbinfo.dict_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)
© 2025 Oracle
Licensed under the GPLv2 License.