MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
dict_obj_tree
テーブルは、dict_obj_info
テーブルからのテーブル情報のツリーベースのビューを提供します。 これは主にテストでの使用を目的としていますが、NDB
データベースオブジェクトの階層を視覚化する場合に役立ちます。
dict_obj_tree
テーブルには、次のカラムがあります:
type
DICT
オブジェクトのタイプ。オブジェクトタイプの名前を取得するには、dict_obj_types
で結合
id
オブジェクト識別子 (dict_obj_info
の id
カラムと同じ)
ディスクデータの Undo ログファイルおよびデータファイルの場合、これは INFORMATION_SCHEMA.FILES
テーブルの LOGFILE_GROUP_NUMBER
カラムに表示される値と同じです。Undo ログファイルの場合、ndbinfo logbuffers
および logspaces
テーブルの 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
/PRIMARYsys/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
階層内のオブジェクトのレベル
パス
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)
NDB 8.0.24 に dict_obj_tree
テーブルが追加されました。