Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


18.4.10 ndb_desc — NDB テーブルの表示

ndb_desc は、1 つ以上の NDB テーブルの詳細な説明を出力します。

使用法

ndb_desc -c connect_string tbl_name -d db_name [-p]
      
ndb_desc -c connect_string index_name -d db_name -t tbl_name

出力例

MySQL テーブル作成およびレコード挿入ステートメント:

USE test;

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 pk (id),
    UNIQUE KEY uk (name)
) ENGINE=NDB;

INSERT INTO fish VALUES
    ('','guppy', 35, 2), ('','tuna', 2500, 150000),
    ('','shark', 3000, 110000), ('','manta ray', 1500, 50000),
    ('','grouper', 900, 125000), ('','puffer', 250, 2500);

ndb_desc の出力:

shell> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 2
Fragment type: 9
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: 311
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
TableStatus: Retrieved
-- 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
length_mm Int NOT NULL AT=FIXED ST=MEMORY
weight_gm Int NOT NULL AT=FIXED ST=MEMORY

-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
uk$unique(name) - UniqueHashIndex
uk(name) - OrderedIndex

-- Per partition info --
Partition  Row count  Commit count  Frag fixed memory ...
0          2          2             32768             ...
1          4          4             32768             ...

... Frag varsized memory  Extent_space  Free extent_space
... 32768                 0             0
... 32768                 0             0

NDBT_ProgramExit: 0 - OK

複数のテーブルに関する情報は、テーブル名をスペースで区切って ndb_desc を 1 回呼び出すことによって取得できます。すべてのテーブルは同じデータベースにある必要があります。

特定のインデックスに関する追加情報を取得するには、次に示すように ndb_desc の最初の引数としてインデックス名を指定して --table (短縮形: -t) オプションを使用します。

shell> ./ndb_desc uk -d test -t fish
-- uk --
Version: 3
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: 3
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
Row Checksum: 1
Row GCI: 1
SingleUserMode: 2
ForceVarPart: 0
FragmentCount: 4
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- 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を参照してください。

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;

(上記のステートメントおよびそれらによって作成されるオブジェクトについては、セクション18.5.12.1「MySQL Cluster ディスクデータオブジェクト」セクション13.1.14「CREATE LOGFILE GROUP 構文」、およびセクション13.1.18「CREATE TABLESPACE 構文」を参照してください。)

カラムの 2 をディスクに格納するバージョンの fish テーブルを作成して移入できるようになりました (前のバージョンのテーブルが存在する場合はそれを最初に削除します)。

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 pk (id),
    UNIQUE KEY uk (name)
) TABLESPACE ts_1 STORAGE DISK 
ENGINE=NDB;

INSERT INTO fish VALUES
    ('','guppy', 35, 2), ('','tuna', 2500, 150000),
    ('','shark', 3000, 110000), ('','manta ray', 1500, 50000),
    ('','grouper', 900, 125000), ('','puffer', 250, 2500);

ndb_desc をこのバージョンのテーブルに対して実行すると、次の出力が表示されます。

shell> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 3
Fragment type: 9
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: 321
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
TableStatus: Retrieved
-- 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
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$unique(name) - UniqueHashIndex
uk(name) - OrderedIndex
-- Per partition info --
Partition  Row count  Commit count  Frag fixed memory ...
0          2          2             32768             ...
1          4          4             32768             ...

... Frag varsized memory  Extent_space  Free extent_space
... 32768                 0             0
... 32768                 0             0

NDBT_ProgramExit: 0 - OK

これは、テーブルスペースからこのテーブルの各パーティションに 1048576 バイトが割り当てられ、そのうちの 1044440 バイトが追加の格納のための空き領域であることを意味します。言い換えると、このテーブルのディスクベースのカラムのデータを格納するために、現在パーティションごとに 1048576 - 1044440 = 4136 バイトが使用されています。Free extent_space として表示されるバイト数は、fish テーブルのディスク上カラムデータを格納するためにのみ使用できます。このため、INFORMATION_SCHEMA.FILES テーブルから選択したときに表示されません。

次の表には、ndb_desc に固有のオプションが含まれています。追加説明が表のあとにあります。ほとんどの MySQL Cluster プログラム (ndb_desc を含む) に共通するオプションについては、セクション18.4.27「MySQL Cluster プログラムに共通するオプション — MySQL Cluster プログラムに共通するオプション」を参照してください。

表 18.84  この表は、ndb_desc プログラムのコマンド行オプションについて説明しています

形式 説明 追加または削除

--blob-info

-b

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

すべての MySQL 5.6 ベースリリース

--database=dbname

-d

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

すべての MySQL 5.6 ベースリリース

--extra-node-info

-n

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

すべての MySQL 5.6 ベースリリース

--extra-partition-info

-p

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

すべての MySQL 5.6 ベースリリース

--retries=#

-r

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

すべての MySQL 5.6 ベースリリース

--table=tbl_name

-t

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

すべての MySQL 5.6 ベースリリース

--unqualified

-u

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

すべての MySQL 5.6 ベースリリース


  • --blob-info-b

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

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

  • --database=db_name, -d

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

  • --extra-node-info, -n

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

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

  • --extra-partition-info, -p

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

  • --retries=#, -r

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

  • --table=tbl_name, -t

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

  • --unqualified, -u

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