Documentation Home
MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  / 23.5 NDB 集群程序  /  18.5.10 ndb_desc — 描述 NDB 表

18.5.10 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(11) NOT NULL AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    length_mm INT(11) NOT NULL,
    weight_gm INT(11) NOT NULL,

    PRIMARY KEY pk (id),
    UNIQUE KEY uk (name)
) ENGINE=NDB;

INSERT INTO fish VALUES
    ('','guppy', 35, 2), ('','tuna', 2500, 150000),
    ('','shark', 3000, 110000), ('','manta ray', 1500, 50000),
    ('','grouper', 900, 125000), ('','puffer', 250, 2500);

来自ndb_desc的输出:

$> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 2
Fragment type: 9
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: 311
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
TableStatus: Retrieved
-- 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
length_mm Int NOT NULL AT=FIXED ST=MEMORY
weight_gm Int NOT NULL AT=FIXED ST=MEMORY

-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
uk$unique(name) - UniqueHashIndex
uk(name) - OrderedIndex

-- Per partition info --
Partition  Row count  Commit count  Frag fixed memory ...
0          2          2             32768             ...
1          4          4             32768             ...

... Frag varsized memory  Extent_space  Free extent_space
... 32768                 0             0
... 32768                 0             0

NDBT_ProgramExit: 0 - OK

关于多个表的信息可以通过使用它们的名称在一次ndb_desc调用中获得,以空格分隔。所有表必须在同一个数据库中。

--table您可以使用(short form: -t) 选项并提供索引名称作为ndb_desc的第一个参数来 获取有关特定索引的其他信息,如下所示:

$> ./ndb_desc uk -d test -t fish
-- uk --
Version: 3
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: 3
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
Row Checksum: 1
Row GCI: 1
SingleUserMode: 2
ForceVarPart: 0
FragmentCount: 4
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- 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列包含表的架构对象版本。有关解释此值的信息,请参阅 导航台模式对象版本

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;

(有关刚刚显示的语句及其创建的对象的更多信息,请参阅 第 18.6.11.1 节,“NDB Cluster Disk Data Objects”,以及 第 13.1.14 节,“CREATE LOGFILE GROUP 语句”第 13.1.18 节, “CREATE TABLESPACE 语句”。)

现在我们可以创建并填充一个版本的 fish表,该版本在磁盘上存储其 2 个列(如果表的先前版本已经存在,请先删除该版本):

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 pk (id),
    UNIQUE KEY uk (name)
) TABLESPACE ts_1 STORAGE DISK
ENGINE=NDB;

INSERT INTO fish VALUES
    ('','guppy', 35, 2), ('','tuna', 2500, 150000),
    ('','shark', 3000, 110000), ('','manta ray', 1500, 50000),
    ('','grouper', 900, 125000), ('','puffer', 250, 2500);

针对此版本的表运行时, ndb_desc显示以下输出:

$> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 3
Fragment type: 9
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: 321
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
TableStatus: Retrieved
-- 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
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$unique(name) - UniqueHashIndex
uk(name) - OrderedIndex
-- Per partition info --
Partition  Row count  Commit count  Frag fixed memory ...
0          2          2             32768             ...
1          4          4             32768             ...

... Frag varsized memory  Extent_space  Free extent_space
... 32768                 0             0
... 32768                 0             0

NDBT_ProgramExit: 0 - OK

这意味着在每个分区上从该表的表空间中分配了 1048576 字节,其中 1044440 字节可用于额外存储。换句话说,每个分区 1048576 - 1044440 = 4136 字节当前用于存储来自该表的基于磁盘的列的数据。显示为的字节数Free extent_space仅可用于存储表中的磁盘列数据fish ;因此,从INFORMATION_SCHEMA.FILES 表中选择时它是不可见的。

下表显示了 可以与ndb_desc一起使用的选项。表后有其他说明。

表 18.24 与程序 ndb_desc 一起使用的命令行选项

格式 描述 添加、弃用或删除

--blob-info,

-b

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

(支持所有基于 MySQL 5.6 的 NDB 版本)

--character-sets-dir=path

包含字符集的目录

(支持所有基于 MySQL 5.6 的 NDB 版本)

--connect-retries=#

放弃前重试连接的次数

添加:NDB 7.4.9

--connect-retry-delay=#

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

添加:NDB 7.4.9

--connect-string=connection_string,

-c connection_string

与 --ndb-connectstring 相同

(支持所有基于 MySQL 5.6 的 NDB 版本)

--core-file

写入核心文件出错;用于调试

(支持所有基于 MySQL 5.6 的 NDB 版本)

--database=name,

-d name

包含表的数据库名称

(支持所有基于 MySQL 5.6 的 NDB 版本)

--defaults-extra-file=path

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

(支持所有基于 MySQL 5.6 的 NDB 版本)

--defaults-file=path

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

(支持所有基于 MySQL 5.6 的 NDB 版本)

--defaults-group-suffix=string

还阅读带有 concat(group, suffix) 的组

(支持所有基于 MySQL 5.6 的 NDB 版本)

--extra-node-info,

-n

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

(支持所有基于 MySQL 5.6 的 NDB 版本)

--extra-partition-info,

-p

显示有关分区的信息

(支持所有基于 MySQL 5.6 的 NDB 版本)

--help,

-?

显示帮助文本并退出

(支持所有基于 MySQL 5.6 的 NDB 版本)

--login-path=path

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

(支持所有基于 MySQL 5.6 的 NDB 版本)

--ndb-connectstring=connection_string,

-c connection_string

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

(支持所有基于 MySQL 5.6 的 NDB 版本)

--ndb-mgmd-host=connection_string,

-c connection_string

与 --ndb-connectstring 相同

(支持所有基于 MySQL 5.6 的 NDB 版本)

--ndb-nodeid=#

为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID

(支持所有基于 MySQL 5.6 的 NDB 版本)

--ndb-optimized-node-selection

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

(支持所有基于 MySQL 5.6 的 NDB 版本)

--no-defaults

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

(支持所有基于 MySQL 5.6 的 NDB 版本)

--print-defaults

打印程序参数列表并退出

(支持所有基于 MySQL 5.6 的 NDB 版本)

--retries=#,

-r #

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

(支持所有基于 MySQL 5.6 的 NDB 版本)

--table=name,

-t name

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

(支持所有基于 MySQL 5.6 的 NDB 版本)

--unqualified,

-u

使用不合格的表名

(支持所有基于 MySQL 5.6 的 NDB 版本)

--usage,

-?

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

(支持所有基于 MySQL 5.6 的 NDB 版本)

--version,

-V

显示版本信息并退出

(支持所有基于 MySQL 5.6 的 NDB 版本)


  • --auto-inc,-a

    显示表列的下一个值 AUTO_INCREMENT(如果有)。

  • --blob-info,-b

    包括有关下属 BLOBTEXT列的信息。

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

  • --character-sets-dir

    命令行格式 --character-sets-dir=path

    包含字符集的目录。

  • --connect-retries

    命令行格式 --connect-retries=#
    介绍 5.6.28-ndb-7.4.9
    类型 整数
    默认值 12
    最小值 0
    最大值 12

    放弃前重试连接的次数。

  • --connect-retry-delay

    命令行格式 --connect-retry-delay=#
    介绍 5.6.28-ndb-7.4.9
    类型 整数
    默认值 5
    最小值 0
    最大值 5

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

  • --connect-string

    命令行格式 --connect-string=connection_string
    类型 细绳
    默认值 [none]

    与 --ndb-connectstring 相同。

  • --context,-x

    显示表的其他上下文信息,例如架构、数据库名称、表名称和表的内部 ID。

  • --core-file

    命令行格式 --core-file

    写入核心文件出错;在调试中使用。

  • --database=db_name, -d

    指定应在其中找到表的数据库。

  • --defaults-extra-file

    命令行格式 --defaults-extra-file=path
    类型 细绳
    默认值 [none]

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

  • --defaults-file

    命令行格式 --defaults-file=path
    类型 细绳
    默认值 [none]

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

  • --defaults-group-suffix

    命令行格式 --defaults-group-suffix=string
    类型 细绳
    默认值 [none]

    还可以阅读带有 concat(group, suffix) 的组。

  • --extra-node-info,-n

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

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

  • --extra-partition-info,-p

    打印有关表分区的附加信息。

  • --help

    命令行格式 --help

    显示帮助文本并退出。

  • --login-path

    命令行格式 --login-path=path
    类型 细绳
    默认值 [none]

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

  • --ndb-connectstring

    命令行格式 --ndb-connectstring=connection_string
    类型 细绳
    默认值 [none]

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

  • --ndb-mgmd-host

    命令行格式 --ndb-mgmd-host=connection_string
    类型 细绳
    默认值 [none]

    与 --ndb-connectstring 相同。

  • --ndb-nodeid

    命令行格式 --ndb-nodeid=#
    类型 整数
    默认值 [none]

    为此节点设置节点 ID,覆盖 --ndb-connectstring 设置的任何 ID。

  • --ndb-optimized-node-selection

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

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

  • --no-defaults

    命令行格式 --no-defaults

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

  • --print-defaults

    命令行格式 --print-defaults

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

  • --retries=#, -r

    在放弃之前尝试多次连接。每秒进行一次连接尝试。

  • --table=tbl_name, -t

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

  • --unqualified,-u

    使用不合格的表名。

  • --usage

    命令行格式 --usage

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

  • --version

    命令行格式 --version

    显示版本信息并退出。

在 NDB 7.3 和 NDB 7.4 中,输出中列出的表索引的顺序是不确定的,并且可能因平台而异。NDB 7.5 中解决了此问题。(漏洞 #81763,漏洞 #23547742)