文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (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 模式对象版本

可以使用 NDB_TABLE 注释嵌入在 CREATE TABLEALTER 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_GROUPNDB 在这种情况下会自动设置它。可以使用 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 Cluster 磁盘数据对象”,以及 第 15.1.16 节“CREATE LOGFILE GROUP 语句”第 15.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 将显示以下输出

$> ./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 表的基于磁盘的列数据;因此,在从信息架构 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=path
    类型 字符串
    默认值 [无]

    在读取全局文件后读取给定文件。

  • --defaults-file

    命令行格式 --defaults-file=path
    类型 字符串
    默认值 [无]

    仅从给定文件读取默认选项。

  • --defaults-group-suffix

    命令行格式 --defaults-group-suffix=string
    类型 字符串
    默认值 [无]

    还读取具有 concat(group, suffix) 的组。

  • --extra-node-info-n

    包含有关表分区与其所在的节点之间的映射的信息。此信息对于验证分布感知机制和支持应用程序更有效地访问存储在 NDB Cluster 中的数据可能很有用。

    使用此选项还需要使用 --extra-partition-info (-p) 选项。

  • --extra-partition-info-p

    打印有关表的区段的更多信息。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --login-path

    命令行格式 --login-path=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=level
    类型 枚举
    默认值 relaxed
    有效值

    relaxed

    strict

    设置连接到管理服务器所需的 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=list
    类型 路径名
    默认值(Unix) $HOME/ndb-tls
    默认值(Windows) $HOMEDIR/ndb-tls

    指定要搜索 CA 文件的目录列表。在 Unix 平台上,目录名称用冒号 (:) 分隔;在 Windows 系统上,分号字符 (;) 用作分隔符。目录引用可以是相对的或绝对的;它可以包含一个或多个环境变量,每个变量都用一个前缀美元符号 ($) 表示,并在使用前进行扩展。

    搜索从最左边的命名目录开始,从左到右进行,直到找到文件为止。空字符串表示空搜索路径,这会导致所有搜索失败。由单个点 (.) 组成的字符串表示搜索路径限制在当前工作目录。

    如果未提供搜索路径,则使用编译时默认值。此值取决于使用的平台:在 Windows 上,此值为 \ndb-tls;在其他平台(包括 Linux)上,此值为 $HOME/ndb-tls。可以使用 -DWITH_NDB_TLS_SEARCH_PATH 编译 NDB 集群来覆盖此值。

  • --no-defaults

    命令行格式 --no-defaults

    不要从除登录文件以外的任何选项文件中读取默认选项。

  • --print-defaults

    命令行格式 --print-defaults

    打印程序参数列表并退出。

  • --retries=#, -r

    在放弃之前尝试连接这么多次。每秒尝试连接一次。

  • --table=tbl_name, -t

    指定要查找索引的表。

  • --unqualified, -u

    使用非限定表名。

  • --usage

    命令行格式 --usage

    显示帮助文本并退出;与 --help 相同。

  • --version

    命令行格式 --version

    显示版本信息并退出。

输出中列出的表索引按 ID 排序。