文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


25.6.17.26 ndbinfo dict_obj_tree 表格

dict_obj_tree 表格提供來自dict_obj_info 表格的表格資訊的樹狀檢視。這主要用於測試,但可用於視覺化 NDB 資料庫物件的階層。

dict_obj_tree 表格包含下列欄位

  • type

    DICT 物件的類型;在 dict_obj_types 上聯結,以取得物件類型的名稱

  • id

    物件識別碼;與 dict_obj_info 中的 id 欄位相同

    對於磁碟資料復原日誌檔案和資料檔案,這與 Information Schema FILES 表格的 LOGFILE_GROUP_NUMBER 欄位中顯示的值相同;對於復原日誌檔案,這也與 ndbinfo logbufferslogspaces 表格中的 log_id 欄位顯示的值相同

  • name

    物件的完整限定名稱;與 dict_obj_info 中的 fq_name 欄位相同

    對於表格,這是 database_name/def/table_name(與其 parent_name 相同);對於任何類型的索引,這會採用 NDB$INDEX_index_id_CUSTOM 的形式

  • parent_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/PRIMARY,而對於唯一索引鍵,它是 sys/def/table_id/uk_name$unique

  • root_type

    根物件的 DICT 物件類型;在 dict_obj_types 上聯結,以取得物件類型的名稱

  • root_id

    根物件的識別碼;與 dict_obj_info 表格的 id 欄位相同

  • root_name

    根物件的完整限定名稱;與 dict_obj_info 表格的 fq_name 欄位相同

  • level

    物件在階層中的層級

  • path

    物件在 NDB 物件階層中的完整路徑;物件以向右箭頭(表示為 ->)分隔,從左側的根物件開始

  • indented_name

    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)

在使用磁碟資料表格時,請注意在此情況下,表格空間或日誌檔案群組會被視為根物件。這表示您必須知道與給定表格關聯的任何表格空間或日誌檔案群組的名稱,或從 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)