文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0參考手冊  /  ...  /  ndb_desc — 描述NDB資料表

25.5.9 ndb_desc — 描述NDB資料表

ndb_desc 提供一個或多個 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 的輸出

$> ./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

透過使用以空格分隔的名稱,可以在單次調用 ndb_desc 中獲得多個資料表的資訊。所有資料表必須在同一個資料庫中。

您可以使用 --table(簡寫形式:-t)選項,並將索引的名稱作為 ndb_desc 的第一個引數,來取得關於特定索引的額外資訊,如下所示

$> ./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

當以這種方式指定索引時,--extra-partition-info--extra-node-info 選項不起作用。

輸出中的 Version 欄包含資料表的結構描述物件版本。有關解讀此值的資訊,請參閱 NDB 結構描述物件版本

可以使用嵌入在 CREATE TABLEALTER TABLE 語句中的 NDB_TABLE 註解設定的三個資料表屬性,在 ndb_desc 輸出中也可見。資料表的 FRAGMENT_COUNT_TYPE 總是顯示在 FragmentCountType 欄中。READ_ONLYFULLY_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=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
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 欄會顯示剛啟用的二進制屬性。您可以在此處顯示的輸出中看到此情況(強調文字)

$> ./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

有關這些資料表屬性的更多資訊,請參閱 第15.1.20.12節,「設定NDB註解選項」

Extent_spaceFree 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;

(有關剛顯示的語句和它們建立的物件的更多資訊,請參閱 第25.6.11.1節,「NDB叢集磁碟資料物件」,以及 第15.1.16節,「CREATE LOGFILE GROUP 語句」,和 第15.1.21節,「CREATE TABLESPACE 語句」。)

現在,我們可以建立和填充一個版本的 fish 資料表,該資料表將其 2 個欄儲存在磁碟上(如果資料表已經存在,則先刪除其先前版本)

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 會顯示以下輸出

$> ./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

這表示從每個分割區上的資料表空間為此資料表配置了 1048576 個位元組,其中 1044440 個位元組仍可用於額外的儲存空間。換句話說,目前正在使用每個分割區 1048576 - 1044440 = 4136 個位元組來儲存此資料表基於磁碟的欄的資料。顯示為 Free extent_space 的位元組數僅適用於儲存來自 fish 資料表的磁碟欄資料;因此,當從 Information Schema FILES 資料表選擇時,它不可見。

對於磁碟資料表,也會顯示 Tablespace idTablespace

對於完全複製的資料表,ndb_desc 僅顯示持有主要分割區片段複本的節點;具有(僅)複本片段複本的節點會被忽略。您可以使用 mysql 客戶端,從 table_distribution_statustable_fragmentstable_infotable_replicas 資料表在 ndbinfo 資料庫中取得此類資訊。

下表中顯示了所有可與 ndb_desc 一起使用的選項。其他描述會在表格之後。

  • --auto-inc-a

    顯示資料表的 AUTO_INCREMENT 欄的下一個值(如果有的話)。

  • --blob-info-b

    包含有關從屬 BLOBTEXT 欄的資訊。

    使用此選項也需要使用 --extra-partition-info (-p) 選項。

  • --character-sets-dir

    命令列格式 --character-sets-dir=路徑

    包含字元集的目錄。

  • --connect-retries

    命令列格式 --connect-retries=#
    類型 整數
    預設值 12
    最小值 0
    最大值 12

    放棄之前重試連線的次數。

  • --connect-retry-delay

    命令列格式 --connect-retry-delay=#
    類型 整數
    預設值 5
    最小值 0
    最大值 5

    嘗試聯絡管理伺服器之間等待的秒數。

  • --connect-string

    命令列格式 --connect-string=connection_string
    類型 字串
    預設值 [無]

    --ndb-connectstring 相同。

  • --context, -x

    顯示表格的額外關聯資訊,例如綱要、資料庫名稱、表格名稱和表格的內部 ID。

  • --core-file

    命令列格式 --core-file

    發生錯誤時寫入核心檔案;用於偵錯。

  • --database=db_name, -d

    指定應在其中找到表格的資料庫。

  • --defaults-extra-file

    命令列格式 --defaults-extra-file=路徑
    類型 字串
    預設值 [無]

    在讀取全域檔案後,讀取給定的檔案。

  • --defaults-file

    命令列格式 --defaults-file=路徑
    類型 字串
    預設值 [無]

    僅從給定的檔案讀取預設選項。

  • --defaults-group-suffix

    命令列格式 --defaults-group-suffix=字串
    類型 字串
    預設值 [無]

    同時讀取 concat(group, suffix) 的群組。

  • --extra-node-info, -n

    包含關於表格分割區和其所在資料節點之間對應關係的資訊。此資訊對於驗證分佈感知機制,以及支援應用程式更有效率地存取儲存在 NDB Cluster 中的資料非常有用。

    使用此選項也需要使用 --extra-partition-info (-p) 選項。

  • --extra-partition-info, -p

    列印關於表格分割區的其他資訊。

  • --help

    命令列格式 --help

    顯示說明文字並結束。

  • --login-path

    命令列格式 --login-path=路徑
    類型 字串
    預設值 [無]

    從登入檔案讀取給定的路徑。

  • --no-login-paths

    命令列格式 --no-login-paths

    略過從登入路徑檔案讀取選項。

  • --ndb-connectstring

    命令列格式 --ndb-connectstring=connection_string
    類型 字串
    預設值 [無]

    設定連線到 ndb_mgmd 的連線字串。語法:[nodeid=id;][host=]hostname[:port]。覆寫 NDB_CONNECTSTRINGmy.cnf 中的項目。

  • --ndb-mgm-tls

    命令列格式 --ndb-mgm-tls=層級
    類型 列舉
    預設值 寬鬆
    有效值

    寬鬆

    嚴格

    設定連線到管理伺服器所需的 TLS 支援層級;為 relaxedstrict 其中之一。relaxed (預設值) 表示會嘗試 TLS 連線,但並非必須成功;strict 表示必須使用 TLS 連線。

  • --ndb-mgmd-host

    命令列格式 --ndb-mgmd-host=connection_string
    類型 字串
    預設值 [無]

    --ndb-connectstring 相同。

  • --ndb-nodeid

    命令列格式 --ndb-nodeid=#
    類型 整數
    預設值 [無]

    設定此節點的節點 ID,覆寫 --ndb-connectstring 設定的任何 ID。

  • --ndb-optimized-node-selection

    命令列格式 --ndb-optimized-node-selection

    啟用交易節點選擇的最佳化。預設為啟用;使用 --skip-ndb-optimized-node-selection 停用。

  • --ndb-tls-search-path

    命令列格式 --ndb-tls-search-path=清單
    類型 路徑名稱
    預設值 (Unix) $HOME/ndb-tls
    預設值 (Windows) $HOMEDIR/ndb-tls

    指定要搜尋 CA 檔案的目錄清單。在 Unix 平台上,目錄名稱以冒號 (:) 分隔;在 Windows 系統上,分號字元 (;) 用作分隔符號。目錄參照可以是相對的或絕對的;它可以包含一個或多個環境變數,每個環境變數都以美元符號 ($) 作為前綴,並在使用之前展開。

    搜尋從最左邊的命名目錄開始,並從左到右進行,直到找到檔案為止。空字串表示空的搜尋路徑,這會導致所有搜尋失敗。由單一點號 (.) 組成的字串表示搜尋路徑僅限於目前的工作目錄。

    如果未提供搜尋路徑,則使用編譯的預設值。此值取決於使用的平台:在 Windows 上,它是 \ndb-tls;在其他平台 (包括 Linux) 上,它是 $HOME/ndb-tls。這可以透過使用 -DWITH_NDB_TLS_SEARCH_PATH 編譯 NDB Cluster 來覆寫。

  • --no-defaults

    命令列格式 --no-defaults

    不從任何選項檔案讀取預設選項,除了登入檔案。

  • --print-defaults

    命令列格式 --print-defaults

    列印程式引數清單並結束。

  • --retries=#, -r

    放棄之前嘗試連線的次數。每秒嘗試一次連線。

  • --table=tbl_name, -t

    指定要搜尋索引的表格。

  • --unqualified, -u

    使用不完整的表格名稱。

  • --usage

    命令列格式 --usage

    顯示說明文字並結束;與 --help 相同。

  • --version

    命令列格式 --version

    顯示版本資訊並結束。

輸出中列出的表格索引會依 ID 排序。