MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  ndb_desc — NDB テーブルの表示

23.4.9 ndb_desc — NDB テーブルの表示

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-inc,

-a

テーブルに次の値がある場合、AUTO_INCREMENT oolumn の次の値を表示

追加: NDB 8.0.21

--blob-info,

-b

BLOB テーブルのパーティション情報を出力に含めます。 -p オプションも使用する必要があります

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--context,

-x

データベース、スキーマ、名前、内部 ID などのテーブルの追加情報を表示

追加: NDB 8.0.21

--database=dbname,

-d

テーブルが含まれているデータベースの名前

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--extra-node-info,

-n

パーティションとデータノードのマッピングを出力に含めます。 -p オプションも使用する必要があります

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--extra-partition-info,

-p

パーティションに関する情報を表示します

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--retries=#,

-r

接続を再試行する回数 (1 秒おき)

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--table=tbl_name,

-t

インデックスを探すテーブルを指定します。 このオプションを使用すると、-p および -n は効果がなくなり、無視されます

(MySQLに基づくすべてのNDBリリースでサポート 8.0)

--unqualified,

-u

修飾されていないテーブル名を使用します

(MySQLに基づくすべてのNDBリリースでサポート 8.0)


  • --auto-inc, -a

    テーブルの AUTO_INCREMENT カラムに次の値がある場合は表示します。

  • --blob-info, -b

    従属する BLOB および TEXT カラムに関する情報を含めます。

    このオプションを使用する場合は、--extra-partition-info (-p) オプションも使用する必要があります。

  • --context, -x

    スキーマ、データベース名、テーブル名、テーブルの内部 ID など、テーブルの追加のコンテキスト情報を表示します。

  • --database=db_name, -d

    テーブルが見つかるはずのデータベースを指定します。

  • --extra-node-info, -n

    テーブルパーティションおよびそれらが存在するデータノードのマッピングに関する情報を含めます。 この情報は、配布認識メカニズムを検証し、NDB Cluster に格納されているデータへのより効率的なアプリケーションアクセスをサポートするのに役立ちます。

    このオプションを使用する場合は、--extra-partition-info (-p) オプションも使用する必要があります。

  • --extra-partition-info, -p

    テーブルのパーティションに関する追加情報を出力します。

  • --retries=#, -r

    接続を停止する前に、この回数だけ接続を試みます。 接続の試行は 1 秒おきに実行されます。

  • --table=tbl_name, -t

    インデックスを探すテーブルを指定します。

  • --unqualified, -u

    修飾されていないテーブル名を使用します。

出力にリストされているテーブルインデックスは、ID 順に並べられています。


関連キーワード:  NDB, テーブル, ndbinfo, ndb, 表示, NOT, desc, ノード, 出力, fish