ndb_desc は、1 つ以上の
NDB
テーブルの詳細な説明を出力します。
使用法
ndb_desc -c connection_string tbl_name -d db_name [options]
ndb_desc -c connection_string index_name -d db_name -t tbl_name
ndb_desc で使用できるその他のオプションは、このセクションの後半で説明します。
出力例
MySQL テーブル作成およびレコード挿入ステートメント:
USE test;
CREATE TABLE fish (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
length_mm INT NOT NULL,
weight_gm INT NOT NULL,
PRIMARY KEY pk (id),
UNIQUE KEY uk (name)
) ENGINE=NDB;
INSERT INTO fish VALUES
(NULL, 'guppy', 35, 2), (NULL, 'tuna', 2500, 150000),
(NULL, 'shark', 3000, 110000), (NULL, 'manta ray', 1500, 50000),
(NULL, 'grouper', 900, 125000), (NULL ,'puffer', 250, 2500);
ndb_desc の出力:
shell> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 2
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 1
Length of frm data: 337
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 2
FragmentCount: 2
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:
HashMap: DEFAULT-HASHMAP-3840-2
-- Attributes --
id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY DYNAMIC
length_mm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
weight_gm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
uk(name) - OrderedIndex
uk$unique(name) - UniqueHashIndex
-- Per partition info --
Partition Row count Commit count Frag fixed memory Frag varsized memory Extent_space Free extent_space
0 2 2 32768 32768 0 0
1 4 4 32768 32768 0 0
NDBT_ProgramExit: 0 - OK
複数のテーブルに関する情報は、テーブル名をスペースで区切って ndb_desc を 1 回呼び出すことによって取得できます。 すべてのテーブルは同じデータベースにある必要があります。
--table
(短い形式)
を使用して、特定のインデックスに関する追加情報を取得できます:
-t
)
オプションで、次に示すように、インデックスの名前を
ndb_desc
の最初の引数として指定します:
shell> ./ndb_desc uk -d test -t fish
-- uk --
Version: 2
Base table: fish
Number of attributes: 1
Logging: 0
Index type: OrderedIndex
Index status: Retrieved
-- Attributes --
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY
-- IndexTable 10/uk --
Version: 2
Fragment type: FragUndefined
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: yes
Number of attributes: 2
Number of primary keys: 1
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 2
ForceVarPart: 0
PartitionCount: 2
FragmentCount: 2
FragmentCountType: ONE_PER_LDM_PER_NODE
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:
-- Attributes --
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY
NDB$TNODE Unsigned [64] PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
-- Indexes --
PRIMARY KEY(NDB$TNODE) - UniqueHashIndex
NDBT_ProgramExit: 0 - OK
このようにインデックスを指定すると、--extra-partition-info
および --extra-node-info
オプションは効果がありません。
出力の Version
カラムには、テーブルのスキーマオブジェクトバージョンが表示されます。
この値の解釈については、NDB Schema Object Versionsを参照してください。
CREATE TABLE
および
ALTER TABLE
ステートメントに埋め込まれた
NDB_TABLE
コメントを使用して設定できるテーブルプロパティの
3 つは、ndb_desc
出力にも表示されます。
FRAGMENT_COUNT_TYPE
テーブルは、常に
FragmentCountType
カラムに表示されます。 READ_ONLY
および FULLY_REPLICATED
は、1
に設定されている場合、Table
options
カラムに表示されます。
これは、mysql クライアントで次の
ALTER TABLE
ステートメントを実行した後に確認できます:
mysql> ALTER TABLE fish COMMENT='NDB_TABLE=READ_ONLY=1,FULLY_REPLICATED=1';
1 row in set, 1 warning (0.00 sec)
mysql> SHOW WARNINGS\G
+---------+------+---------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+---------------------------------------------------------------------------------------------------------+
| Warning | 1296 | Got error 4503 'Table property is FRAGMENT_COUNT_TYPE=ONE_PER_LDM_PER_NODE but not in comment' from NDB |
+---------+------+---------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
READ_ONLY=1
では、テーブルフラグメント数タイプが
ONE_PER_LDM_PER_NODE_GROUP
である
(またはこれに設定されている)
必要があるため、警告が発行されます。このような場合、NDB
ではこれが自動的に設定されます。
SHOW CREATE TABLE
を使用して、ALTER TABLE
ステートメントが目的の効果を持つことを確認できます:
mysql> SHOW CREATE TABLE fish\G
*************************** 1. row ***************************
Table: fish
Create Table: CREATE TABLE `fish` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`length_mm` int(11) NOT NULL,
`weight_gm` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk` (`name`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
COMMENT='NDB_TABLE=READ_BACKUP=1,FULLY_REPLICATED=1'
1 row in set (0.01 sec)
FRAGMENT_COUNT_TYPE
は明示的に設定されなかったため、その値は
SHOW CREATE TABLE
によって出力されるコメントテキストには表示されません。ただし、ndb_desc
では、この属性の更新された値が表示されます。
Table options
カラムには、有効になったばかりのバイナリプロパティが表示されます。
これは、次に示す出力に表示されます
(強調表示されたテキスト):
shell> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 4
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 1
Length of frm data: 380
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 1
FragmentCount: 1
FragmentCountType: ONE_PER_LDM_PER_NODE_GROUP
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options: readbackup, fullyreplicated
HashMap: DEFAULT-HASHMAP-3840-1
-- Attributes --
id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY DYNAMIC
length_mm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
weight_gm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
uk(name) - OrderedIndex
uk$unique(name) - UniqueHashIndex
-- Per partition info --
Partition Row count Commit count Frag fixed memory Frag varsized memory Extent_space Free extent_space
NDBT_ProgramExit: 0 - OK
これらのテーブルプロパティの詳細は、セクション13.1.20.11「NDB_TABLE オプションの設定」 を参照してください。
Extent_space
および Free
extent_space
カラムは、ディスクにカラムがある
NDB
テーブルにのみ関係しています。インメモリーカラムのみを持つテーブルの場合、これらのカラムには常に値
0
が表示されます。
これらの使用方法を説明するために、前の例を変更します。 最初に、必要なディスクデータオブジェクトを次のように作成する必要があります。
CREATE LOGFILE GROUP lg_1
ADD UNDOFILE 'undo_1.log'
INITIAL_SIZE 16M
UNDO_BUFFER_SIZE 2M
ENGINE NDB;
ALTER LOGFILE GROUP lg_1
ADD UNDOFILE 'undo_2.log'
INITIAL_SIZE 12M
ENGINE NDB;
CREATE TABLESPACE ts_1
ADD DATAFILE 'data_1.dat'
USE LOGFILE GROUP lg_1
INITIAL_SIZE 32M
ENGINE NDB;
ALTER TABLESPACE ts_1
ADD DATAFILE 'data_2.dat'
INITIAL_SIZE 48M
ENGINE NDB;
(上記のステートメントおよびそれらによって作成されるオブジェクトについては、セクション23.5.10.1「NDB Cluster ディスクデータオブジェクト」、セクション13.1.16「CREATE LOGFILE GROUP ステートメント」、およびセクション13.1.21「CREATE TABLESPACE ステートメント」を参照してください。)
カラムの 2 をディスクに格納するバージョンの
fish
テーブルを作成して移入できるようになりました
(前のバージョンのテーブルが存在する場合はそれを最初に削除します)。
DROP TABLE IF EXISTS fish;
CREATE TABLE fish (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
length_mm INT NOT NULL,
weight_gm INT NOT NULL,
PRIMARY KEY pk (id),
UNIQUE KEY uk (name)
) TABLESPACE ts_1 STORAGE DISK
ENGINE=NDB;
INSERT INTO fish VALUES
(NULL, 'guppy', 35, 2), (NULL, 'tuna', 2500, 150000),
(NULL, 'shark', 3000, 110000), (NULL, 'manta ray', 1500, 50000),
(NULL, 'grouper', 900, 125000), (NULL ,'puffer', 250, 2500);
ndb_desc をこのバージョンのテーブルに対して実行すると、次の出力が表示されます。
shell> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 1
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 1
Length of frm data: 1001
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 2
FragmentCount: 2
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options: readbackup
HashMap: DEFAULT-HASHMAP-3840-2
Tablespace id: 16
Tablespace: ts_1
-- Attributes --
id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
name Varchar(80;utf8mb4_0900_ai_ci) NOT NULL AT=SHORT_VAR ST=MEMORY
length_mm Int NOT NULL AT=FIXED ST=DISK
weight_gm Int NOT NULL AT=FIXED ST=DISK
-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
uk(name) - OrderedIndex
uk$unique(name) - UniqueHashIndex
-- Per partition info --
Partition Row count Commit count Frag fixed memory Frag varsized memory Extent_space Free extent_space
0 2 2 32768 32768 1048576 1044440
1 4 4 32768 32768 1048576 1044400
NDBT_ProgramExit: 0 - OK
これは、テーブルスペースからこのテーブルの各パーティションに
1048576 バイトが割り当てられ、そのうちの 1044440
バイトが追加の格納のための空き領域であることを意味します。
言い換えると、このテーブルのディスクベースのカラムのデータを格納するために、現在パーティションごとに
1048576 - 1044440 = 4136 バイトが使用されています。
Free extent_space
として表示されるバイト数は、fish
テーブルのディスク上カラムデータを格納するためにのみ使用できます。このため、INFORMATION_SCHEMA.FILES
テーブルから選択したときに表示されません。
NDB 8.0.21
以降の「ディスクデータ」テーブルでは、Tablespace
id
および Tablespace
が表示されます。
完全にレプリケートされたテーブルの場合、ndb_desc
ではプライマリパーティションフラグメントのレプリカを保持しているノードのみが表示され、コピーフラグメントレプリカ
(のみ) を持つノードは無視されます。
このような情報は、mysql
クライアントを使用して、ndbinfo
データベースの
table_distribution_status
,
table_fragments
,
table_info
テーブルおよび
table_replicas
テーブルから取得できます。
次の表には、ndb_desc に固有のオプションが含まれています。 追加説明が表のあとにあります。 ほとんどの NDB Cluster プログラム (ndb_desc を含む) に共通のオプションについては、セクション23.4.32「NDB Cluster プログラムに共通のオプション — NDB Cluster プログラムに共通のオプション」 を参照してください。
表 23.31 プログラムで使用されるコマンドライン・オプション ndb_desc
形式 | 説明 | 追加、非推奨、または削除された |
---|---|---|
テーブルに次の値がある場合、AUTO_INCREMENT oolumn の次の値を表示 | 追加: NDB 8.0.21 |
|
BLOB テーブルのパーティション情報を出力に含めます。 -p オプションも使用する必要があります | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
データベース、スキーマ、名前、内部 ID などのテーブルの追加情報を表示 | 追加: NDB 8.0.21 |
|
テーブルが含まれているデータベースの名前 | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
パーティションとデータノードのマッピングを出力に含めます。 -p オプションも使用する必要があります | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
パーティションに関する情報を表示します | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
接続を再試行する回数 (1 秒おき) | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
インデックスを探すテーブルを指定します。 このオプションを使用すると、-p および -n は効果がなくなり、無視されます | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
|
修飾されていないテーブル名を使用します | (MySQLに基づくすべてのNDBリリースでサポート 8.0) |
-
テーブルの
AUTO_INCREMENT
カラムに次の値がある場合は表示します。 -
従属する
BLOB
およびTEXT
カラムに関する情報を含めます。このオプションを使用する場合は、
--extra-partition-info
(-p
) オプションも使用する必要があります。 -
スキーマ、データベース名、テーブル名、テーブルの内部 ID など、テーブルの追加のコンテキスト情報を表示します。
-
テーブルが見つかるはずのデータベースを指定します。
-
テーブルパーティションおよびそれらが存在するデータノードのマッピングに関する情報を含めます。 この情報は、配布認識メカニズムを検証し、NDB Cluster に格納されているデータへのより効率的なアプリケーションアクセスをサポートするのに役立ちます。
このオプションを使用する場合は、
--extra-partition-info
(-p
) オプションも使用する必要があります。 -
テーブルのパーティションに関する追加情報を出力します。
-
接続を停止する前に、この回数だけ接続を試みます。 接続の試行は 1 秒おきに実行されます。
-
インデックスを探すテーブルを指定します。
-
修飾されていないテーブル名を使用します。
出力にリストされているテーブルインデックスは、ID 順に並べられています。