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 TABLE
和 ALTER TABLE
陳述式中的 NDB_TABLE
註解來設定的三個資料表屬性,也會在 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=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_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;
(如需剛才顯示的陳述式以及它們建立的物件的詳細資訊,請參閱 第 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 id
和 Tablespace
。
對於完全複寫的資料表,ndb_desc 僅顯示持有主要分割區分段複本的節點;具有複本分段(僅)的節點會被忽略。您可以使用 mysql 用戶端,從 table_distribution_status
、table_fragments
、table_info
和 table_replicas
等資料表中,取得 ndbinfo
資料庫中的相關資訊。
下表顯示可與 ndb_desc 一起使用的所有選項。其他說明會接在表格之後。
--auto-inc
、-a
顯示資料表的
AUTO_INCREMENT
欄的下一個值(如果有的話)。--blob-info
、-b
使用此選項也需要使用
--extra-partition-info
(-p
)選項。-
命令列格式 --character-sets-dir=path
包含字元集的目錄。
-
命令列格式 --connect-retries=#
類型 整數 預設值 12
最小值 0
最大值 12
放棄之前重試連線的次數。
-
命令列格式 --connect-retry-delay=#
類型 整數 預設值 5
最小值 0
最大值 5
嘗試聯絡管理伺服器之間的等待秒數。
-
命令列格式 --connect-string=connection_string
類型 字串 預設值 [無]
與
--ndb-connectstring
相同。 --context
、-x
顯示資料表的其他內容資訊,例如架構、資料庫名稱、資料表名稱和資料表的內部 ID。
-
命令列格式 --core-file
在發生錯誤時寫入核心檔案;用於偵錯。
指定表格所在的資料庫。
-
命令列格式 --defaults-extra-file=路徑
類型 字串 預設值 [無]
在讀取全域檔案後,讀取指定的檔案。
-
命令列格式 --defaults-file=路徑
類型 字串 預設值 [無]
僅從指定的檔案讀取預設選項。
-
命令列格式 --defaults-group-suffix=字串
類型 字串 預設值 [無]
同時讀取 concat(group, suffix) 的群組。
包含表格分割區及其所在資料節點之間對應的資訊。此資訊對於驗證分佈感知機制以及支援應用程式更有效率地存取 NDB Cluster 中儲存的資料非常有用。
使用此選項也需要使用
--extra-partition-info
(-p
)選項。列印表格分割區的額外資訊。
-
命令列格式 --help
顯示說明文字並結束。
-
命令列格式 --login-path=路徑
類型 字串 預設值 [無]
從登入檔案讀取指定的路徑。
-
命令列格式 --no-login-paths
跳過從登入路徑檔案讀取選項。
-
命令列格式 --ndb-connectstring=連線字串
類型 字串 預設值 [無]
設定連線到 ndb_mgmd 的連線字串。語法:
[nodeid=
。覆寫id
;][host=]hostname
[:port
]NDB_CONNECTSTRING
和my.cnf
中的條目。 -
命令列格式 --ndb-mgm-tls=層級
類型 列舉 預設值 寬鬆
有效值 寬鬆
嚴格
設定連線到管理伺服器所需的 TLS 支援層級;可以是
relaxed
或strict
。relaxed
(預設值)表示會嘗試 TLS 連線,但不要求成功;strict
表示必須使用 TLS 連線。 -
命令列格式 --ndb-mgmd-host=連線字串
類型 字串 預設值 [無]
與
--ndb-connectstring
相同。 -
命令列格式 --ndb-nodeid=#
類型 整數 預設值 [無]
設定此節點的節點 ID,覆寫
--ndb-connectstring
所設定的任何 ID。 --ndb-optimized-node-selection
命令列格式 --ndb-optimized-node-selection
啟用交易節點選擇的最佳化。預設為啟用;使用
--skip-ndb-optimized-node-selection
停用。-
命令列格式 --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
不從登入檔案以外的任何選項檔案讀取預設選項。
-
命令列格式 --print-defaults
列印程式引數清單並結束。
--retries=
,#
-r
在放棄之前嘗試連線的次數。每次連線嘗試間隔一秒。
--table=
,tbl_name
-t
指定要搜尋索引的表格。
--unqualified
,-u
使用未限定的表格名稱。
-
命令列格式 --usage
顯示說明文字並結束;與
--help
相同。 -
命令列格式 --version
顯示版本資訊並結束。
輸出中列出的表格索引會依 ID 排序。