このページは機械翻訳したものです。
ndb_desc は、1 つ以上のNDB テーブルの詳細な説明を出力します。
使用法
ndb_desc -cconnection_stringtbl_name -ddb_name [options]ndb_desc -cconnection_stringindex_name -ddb_name -ttbl_namendb_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: 2Fragment type: HashMapPartitionK Value: 6Min load factor: 78Max load factor: 80Temporary table: noNumber of attributes: 4Number of primary keys: 1Length of frm data: 337Max Rows: 0Row Checksum: 1Row GCI: 1SingleUserMode: 0ForceVarPart: 1PartitionCount: 2FragmentCount: 2PartitionBalance: FOR_RP_BY_LDMExtraRowGciBits: 0ExtraRowAuthorBits: 0TableStatus: RetrievedTable options:HashMap: DEFAULT-HASHMAP-3840-2-- Attributes --id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCRname Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY DYNAMIClength_mm Int NOT NULL AT=FIXED ST=MEMORY DYNAMICweight_gm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC-- Indexes --PRIMARY KEY(id) - UniqueHashIndexPRIMARY(id) - OrderedIndexuk(name) - OrderedIndexuk$unique(name) - UniqueHashIndex-- Per partition info --Partition Row count Commit count Frag fixed memory Frag varsized memory Extent_space Free extent_space0 2 2 32768 32768 0 01 4 4 32768 32768 0 0NDBT_ProgramExit: 0 - OK複数のテーブルに関する情報は、テーブル名をスペースで区切ってndb_desc を 1 回呼び出すことによって取得できます。 すべてのテーブルは同じデータベースにある必要があります。
--table (短い形式) を使用して、特定のインデックスに関する追加情報を取得できます:-t) オプションで、次に示すように、インデックスの名前をndb_desc の最初の引数として指定します:
shell> ./ndb_desc uk -d test -t fish-- uk --Version: 2Base table: fishNumber of attributes: 1Logging: 0Index type: OrderedIndexIndex status: Retrieved-- Attributes --name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY-- IndexTable 10/uk --Version: 2Fragment type: FragUndefinedK Value: 6Min load factor: 78Max load factor: 80Temporary table: yesNumber of attributes: 2Number of primary keys: 1Length of frm data: 0Max Rows: 0Row Checksum: 1Row GCI: 1SingleUserMode: 2ForceVarPart: 0PartitionCount: 2FragmentCount: 2FragmentCountType: ONE_PER_LDM_PER_NODEExtraRowGciBits: 0ExtraRowAuthorBits: 0TableStatus: RetrievedTable options:-- Attributes --name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORYNDB$TNODE Unsigned [64] PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY-- Indexes --PRIMARY KEY(NDB$TNODE) - UniqueHashIndexNDBT_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: fishCreate 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=latin1COMMENT='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: 4Fragment type: HashMapPartitionK Value: 6Min load factor: 78Max load factor: 80Temporary table: noNumber of attributes: 4Number of primary keys: 1Length of frm data: 380Max Rows: 0Row Checksum: 1Row GCI: 1SingleUserMode: 0ForceVarPart: 1PartitionCount: 1FragmentCount: 1FragmentCountType: ONE_PER_LDM_PER_NODE_GROUPExtraRowGciBits: 0ExtraRowAuthorBits: 0TableStatus: RetrievedTable options: readbackup, fullyreplicatedHashMap: DEFAULT-HASHMAP-3840-1-- Attributes --id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCRname Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY DYNAMIClength_mm Int NOT NULL AT=FIXED ST=MEMORY DYNAMICweight_gm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC-- Indexes --PRIMARY KEY(id) - UniqueHashIndexPRIMARY(id) - OrderedIndexuk(name) - OrderedIndexuk$unique(name) - UniqueHashIndex-- Per partition info --Partition Row count Commit count Frag fixed memory Frag varsized memory Extent_space Free extent_spaceNDBT_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 DISKENGINE=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: 1Fragment type: HashMapPartitionK Value: 6Min load factor: 78Max load factor: 80Temporary table: noNumber of attributes: 4Number of primary keys: 1Length of frm data: 1001Max Rows: 0Row Checksum: 1Row GCI: 1SingleUserMode: 0ForceVarPart: 1PartitionCount: 2FragmentCount: 2PartitionBalance: FOR_RP_BY_LDMExtraRowGciBits: 0ExtraRowAuthorBits: 0TableStatus: RetrievedTable options: readbackupHashMap: DEFAULT-HASHMAP-3840-2Tablespace id: 16Tablespace: ts_1-- Attributes --id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCRname Varchar(80;utf8mb4_0900_ai_ci) NOT NULL AT=SHORT_VAR ST=MEMORYlength_mm Int NOT NULL AT=FIXED ST=DISKweight_gm Int NOT NULL AT=FIXED ST=DISK-- Indexes --PRIMARY KEY(id) - UniqueHashIndexPRIMARY(id) - OrderedIndexuk(name) - OrderedIndexuk$unique(name) - UniqueHashIndex-- Per partition info --Partition Row count Commit count Frag fixed memory Frag varsized memory Extent_space Free extent_space0 2 2 32768 32768 1048576 10444401 4 4 32768 32768 1048576 1044400NDBT_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 順に並べられています。