Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  ndb_desc — Describe NDB Tables

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


NDBT_ProgramExit: 0 - OK

可以在单个 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

NDBT_ProgramExit: 0 - OK

当以这种方式指定索引时,--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 列中。你可以在执行以下 ALTER TABLE 语句后在 mysql 客户端中看到:

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 需要表的 fragment count 类型是 (或设置为) 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

NDBT_ProgramExit: 0 - OK

有关这些表属性的更多信息,请参阅 第 15.1.20.12 节,“设置 NDB 注释选项”

只有 NDB 表具有磁盘列时,Extent_spaceFree extent_space 列才适用;对于只有内存列的表,这些列始终包含值 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


NDBT_ProgramExit: 0 - OK

这意味着为该表在每个分区上分配了 1048576 字节,其中 1044440 字节仍然可用于额外的存储。换言之,1048576 - 1044440 = 4136 字节每个分区当前用于存储该表的磁盘列数据。显示为 Free extent_space 的字节数仅供该 fish 表的磁盘列数据使用;因此,在从信息模式 FILES 表中选择时不可见。

Tablespace idTablespace 也将显示为磁盘数据表。

对于完全复制的表,ndb_desc 只显示主分区碎片副本所在的节点;忽略只有副本碎片的节点。你可以使用 mysql 客户端,从 table_distribution_statustable_fragmentstable_infotable_replicas 表在 ndbinfo 数据库中获取此类信息。

所有可以与 ndb_desc 一起使用的选项如下表所示。表后面是附加描述。

表 25.30 使用程序 ndb_desc 的命令行选项

Format Description Added, Deprecated, or Removed

--auto-inc,

-a

显示 AUTO_INCREMENT 列的下一个值,如果表中有该列

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--blob-info,

-b

包括 BLOB 表的分区信息在输出中。需要同时使用 -p 选项

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--connect-retries=#

在放弃之前尝试连接的次数

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--connect-retry-delay=#

在尝试联系管理服务器之间等待的秒数

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--connect-string=connection_string,

-c connection_string

与 --ndb-connectstring 相同

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--context,

-x

显示表的额外信息,如数据库、模式、名称和内部 ID

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--database=name,

-d name

包含表的数据库名称

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--defaults-extra-file=path

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

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--defaults-file=path

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

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--defaults-group-suffix=string

也读取带有 concat(group, suffix) 的组

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--extra-node-info,

-n

在输出中包括分区到数据节点的映射;需要 --extra-partition-info

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--extra-partition-info,

-p

显示分区信息

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--help,

-?

显示帮助文本并退出

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--login-path=path

从登录文件中读取给定的路径

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--no-login-paths

不从登录路径文件中读取登录路径

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--ndb-connectstring=connection_string,

-c connection_string

设置连接字符串以连接到 ndb_mgmd。语法:"[nodeid=id;][host=]hostname[:port]"。覆盖 NDB_CONNECTSTRING 和 my.cnf 中的条目

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--ndb-mgm-tls=level

ndb_mgm 客户端 TLS 要求级别

ADDED: 8.3.0

--ndb-mgmd-host=connection_string,

-c connection_string

与 --ndb-connectstring 相同

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--ndb-nodeid=#

设置该节点的节点 ID,覆盖 --ndb-connectstring 中设置的 ID

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--ndb-tls-search-path=list

包含 TLS 密钥和证书的目录列表

ADDED: 8.3.0

--no-defaults

不从任何选项文件中读取默认选项,除了登录文件

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--打印默认值

打印程序参数列表并退出

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--重试次数=#,

-r #

重试连接的次数(每秒一次)

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--表名=name,

-t name

指定要查找索引的表。当使用此选项时,-p 和 -n 无效且被忽略

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--不合格,

-u

使用不合格的表名

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--使用,

-?

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

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--版本,

-V

显示版本信息并退出

(在所有基于 MySQL 8.3 的 NDB 版本中支持)


  • --自动递增, -a

    显示表的下一个 AUTO_INCREMENT 列值,如果它有一个。

  • --blob 信息, -b

    包括关于从属 BLOBTEXT 列的信息。

    使用此选项还需要使用 --额外分区信息 (-p) 选项。

  • --字符集目录

    Command-Line Format --字符集目录=path

    包含字符集的目录。

  • --连接重试次数

    Command-Line Format --连接重试次数=#
    Type 整数
    Default Value 12
    Minimum Value 0
    Maximum Value 12

    在放弃之前重试连接的次数。

  • --连接重试延迟

    Command-Line Format --连接重试延迟=#
    Type 整数
    Default Value 5
    Minimum Value 0
    Maximum Value 5

    在尝试联系管理服务器之间等待的秒数。

  • --连接字符串

    Command-Line Format --连接字符串=connection_string
    Type 字符串
    Default Value [none]

    --ndb-connectstring

  • --上下文, -x

    显示表的附加上下文信息,例如模式、数据库名称、表名称和表的内部 ID。

  • --核心文件

    Command-Line Format --核心文件

    在错误时写入核心文件;用于调试。

  • --数据库=数据库名, -d

    指定表所在的数据库。

  • --额外配置文件

    Command-Line Format --额外配置文件=path
    Type 字符串
    Default Value [none]

    读取指定文件中的配置选项。

  • --配置文件

    Command-Line Format --配置文件=path
    Type 字符串
    Default Value [none]

    仅读取指定文件中的配置选项。

  • --配置组后缀

    Command-Line Format --配置组后缀=字符串
    Type 字符串
    Default Value [none]

    也读取组名与后缀连接的组。

  • --额外节点信息, -n

    包括表分区与数据节点之间的映射信息。这有助于验证分布式awareness机制和支持更高效的应用程序访问存储在NDB Cluster中的数据。

    使用该选项还需要使用 --额外分区信息 (-p) 选项。

  • --额外分区信息, -p

    打印表的额外分区信息。

  • --帮助

    Command-Line Format --帮助

    显示帮助信息并退出。

  • --登录路径

    Command-Line Format --登录路径=path
    Type 字符串
    Default Value [none]

    从登录文件中读取指定路径。

  • --不读取登录路径

    Command-Line Format --不读取登录路径

    跳过读取登录路径文件中的选项。

  • --NDB连接字符串

    Command-Line Format --NDB连接字符串=连接字符串
    Type 字符串
    Default Value [none]

    设置连接到 ndb_mgmd 的连接字符串。语法:[nodeid=id;][host=]主机名[:端口]。覆盖 NDB_CONNECTSTRINGmy.cnf 中的条目。

  • --NDB管理TLS

    Command-Line Format --NDB管理TLS=级别
    Type 枚举
    Default Value relaxed
    Valid Values

    relaxed

    strict

    设置连接到管理服务器所需的TLS级别;可以是 relaxedstrictrelaxed(默认)表示尝试TLS连接,但不要求成功:strict 表示要求TLS连接。

  • --ndb-mgmd-host

    Command-Line Format --ndb-mgmd-host=连接字符串
    Type 字符串
    Default Value [none]

    --ndb-connectstring相同。

  • --ndb-nodeid

    Command-Line Format --ndb-nodeid=#
    Type 整数
    Default Value [none]

    设置该节点的节点 ID,覆盖 --ndb-connectstring 设置的 ID。

  • --ndb-optimized-node-selection

    Command-Line Format --ndb-optimized-node-selection

    启用事务节点选择的优化。默认启用;使用 --skip-ndb-optimized-node-selection 禁用。

  • --ndb-tls-search-path

    Command-Line Format --ndb-tls-search-path=列表
    Type 路径名称
    Default Value (Unix) $HOME/ndb-tls
    Default Value (Windows) $HOMEDIR/ndb-tls

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

    搜索从左到右进行,直到找到文件。空字符串表示空搜索路径,导致所有搜索失败。点 (.) 表示当前工作目录的搜索路径限制。

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

  • --no-defaults

    Command-Line Format --no-defaults

    不要从任何选项文件中读取默认选项,除了登录文件。

  • --print-defaults

    Command-Line Format --print-defaults

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

  • --retries=#, -r

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

  • --table=tbl_name, -t

    指定要在其中查找索引的表。

  • --unqualified, -u

    使用不合格的表名。

  • --usage

    Command-Line Format --usage

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

  • --version

    Command-Line Format --version

    显示版本信息并退出。

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