Spec-Zone.ru › MySQL 8.4

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

    Для файлов журнала отката и данных Disk Data это то же, что и значение в столбце LOGFILE_GROUP_NUMBER таблицы Информационной Схемы FILES; для файлов журнала отката также совпадает со значением в столбце log_id в таблицах ndbinfo logbuffers и logspaces

  • name

    Полное имя объекта; такое же, как столбец fq_name в dict_obj_info

    Для таблицы, это database_name/def/table_name (то же, что и её parent_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_name. Для индекса имя имеет вид sys/def/table_id/index_name. Для первичного ключа - sys/def/table_id/PRIMARY, для уникального ключа - sys/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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/mysql-cluster-ndbinfo-dict-obj-tree.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API