文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  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=path

    包含字元集的目錄。

  • --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=連線字串
    類型 字串
    預設值 [無]

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

  • --ndb-mgm-tls

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

    寬鬆

    嚴格

    設定連線到管理伺服器所需的 TLS 支援層級;可以是 relaxedstrictrelaxed(預設值)表示會嘗試 TLS 連線,但不要求成功;strict 表示必須使用 TLS 連線。

  • --ndb-mgmd-host

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

    --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 排序。