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 Schema Object Versions.
Три свойства таблицы, которые можно задать с помощью NDB_TABLE комментариев, вставленных в команды CREATE TABLE и ALTER TABLE, также отображаются в выводе ndb_desc. FRAGMENT_COUNT_TYPE таблицы всегда отображается в столбце FragmentCountType. READ_ONLY и FULLY_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 требует, чтобы тип количества фрагментов таблицы был (или был установлен в) ONE_PER_LDM_PER_NODE_GROUP; NDB автоматически устанавливает это в таких случаях. Вы можете проверить, что команда ALTER TABLE имеет желаемый эффект, используя SHOW CREATE
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.21.12, «Настройка параметров комментариев NDB».
Столбцы Extent_space и Free
extent_space применимы только к таблицам NDB, имеющим столбцы на диске; для таблиц, содержащих только столбцы в памяти, эти столбцы всегда содержат значение 0.
Для иллюстрации их использования мы модифицируем предыдущий пример. Сначала нам необходимо создать необходимые объекты Disk Data, как показано здесь:
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.17, «CREATE LOGFILE GROUP Statement» и Раздел 15.1.22, «CREATE TABLESPACE Statement».)
Теперь мы можем создать и заполнить версию таблицы 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 также отображаются для таблиц Disk Data.
Для полностью реплицированных таблиц ndb_desc отображает только узлы, содержащие реплики фрагментов первичного раздела; узлы с репликами фрагментов-копий игнорируются. Для получения такой информации вы можете использовать клиент mysql из таблиц table_distribution_status, table_fragments, table_info и table_replicas в базе данных ndbinfo.
Все параметры, которые можно использовать с ndb_desc, показаны в следующей таблице. Дополнительные описания следуют за таблицей.
-
--auto-inc,-aПоказать следующее значение для столбца
AUTO_INCREMENTтаблицы, если таковой имеется. -
--blob-info,-bВключить информацию о подчиненных столбцах
BLOBиTEXT.Использование этой опции также требует использования опции
--extra-partition-info(-p). -
Формат командной строки --character-sets-dir=pathКаталог, содержащий кодировки символов.
-
Формат командной строки --connect-retries=#Тип Integer Значение по умолчанию 12Минимальное значение 0Максимальное значение 12Количество попыток повторного подключения перед отказом.
-
Формат командной строки --connect-retry-delay=#Тип Integer Значение по умолчанию 5Минимальное значение 0Максимальное значение 5Количество секунд ожидания между попытками связаться с сервером управления.
-
Формат командной строки --connect-string=connection_stringТип String Значение по умолчанию [none]То же, что и
--ndb-connectstring. -
--context,-xПоказать дополнительную контекстную информацию о таблице, такую как схема, имя базы данных, имя таблицы и внутренний ID таблицы.
-
Формат командной строки --core-fileЗаписать core-файл при ошибке; используется при отладке.
-
Указать базу данных, в которой должна находиться таблица.
-
Формат командной строки --defaults-extra-file=pathТип String Значение по умолчанию [none]Прочитать заданный файл после чтения глобальных файлов.
-
Формат командной строки --defaults-file=pathТип String Значение по умолчанию [none]Прочитать параметры по умолчанию только из заданного файла.
-
Формат командной строки --defaults-group-suffix=stringТип String Значение по умолчанию [none]Также читать группы с concat(group, suffix).
-
Включить информацию о сопоставлениях между разделами таблиц и узлами данных, на которых они находятся. Эта информация может быть полезна для проверки механизмов распределения и обеспечения более эффективного доступа приложения к данным, хранящимся в NDB Cluster.
Использование этой опции также требует использования опции
--extra-partition-info(-p). -
Вывести дополнительную информацию о разделах таблицы.
-
Формат командной строки --helpОтобразить справку и завершить работу.
-
Формат командной строки --login-path=pathТип String Значение по умолчанию [none]Прочитать заданный путь из файла входа.
-
Формат командной строки --no-login-pathsПропускает чтение параметров из файла пути входа.
-
Формат командной строки --ndb-connectstring=connection_stringТип String Значение по умолчанию [none]Установить строку соединения для подключения к ndb_mgmd. Синтаксис:
[nodeid=. Переопределяет записи вid;][host=]hostname[:port]NDB_CONNECTSTRINGиmy.cnf. -
Формат командной строки --ndb-mgm-tls=levelТип Enumeration Значение по умолчанию relaxedДопустимые значения relaxedstrictЗадает уровень поддержки TLS, необходимый для подключения к серверу управления; одно из
relaxedилиstrict.relaxed(по умолчанию) означает, что выполняется попытка установить TLS-подключение, но успех не обязателен;strictозначает, что для подключения требуется TLS. -
Формат командной строки --ndb-mgmd-host=connection_stringТип String Значение по умолчанию [none]То же, что и
--ndb-connectstring. -
Формат командной строки --ndb-nodeid=#Тип Integer Значение по умолчанию [none]Установить ID узла для этого узла, переопределяя любой ID, установленный с помощью
--ndb-connectstring.
-
--ndb-optimized-node-selectionФормат командной строки --ndb-optimized-node-selectionВключает оптимизации для выбора узлов для транзакций. Включено по умолчанию; используйте
--skip-ndb-optimized-node-selectionдля отключения. -
Формат командной строки --ndb-tls-search-path=listТип Имя пути Значение по умолчанию (Unix) $HOME/ndb-tlsЗначение по умолчанию (Windows) $HOMEDIR/ndb-tlsУказывает список каталогов для поиска файла CA. На платформах Unix имена каталогов разделяются двоеточиями (
:); на системах Windows в качестве разделителя используется точка с запятой (;). Ссылка на каталог может быть относительной или абсолютной; она может содержать одну или несколько переменных среды, каждая из которых обозначается префиксом символа доллара ($), и расширяется перед использованием.Поиск начинается с самого левого указанного каталога и выполняется слева направо до тех пор, пока не будет найден файл. Пустая строка обозначает пустой путь поиска, что приводит к тому, что все поиски завершатся неудачей. Строка, состоящая из одной точки (
.), указывает, что путь поиска ограничен текущим рабочим каталогом.Если путь поиска не указан, используется значение по умолчанию, скомпилированное в программу. Это значение зависит от используемой платформы: в Windows это
\ndb-tls; на других платформах (включая Linux) это$HOME/ndb-tls. Это можно переопределить, скомпилировав NDB Cluster с использованием-DWITH_NDB_TLS_SEARCH_PATH. -
Формат командной строки --no-defaultsНе читать параметры по умолчанию из какого-либо файла параметров, кроме файла входа.
-
Формат командной строки --print-defaultsВывод списка аргументов программы и выход.
-
--retries=,#-rПопытаться подключиться столько раз, прежде чем отказаться. Одна попытка подключения выполняется каждую секунду.
-
--table=,tbl_name-tУказать таблицу, в которой следует искать индекс.
-
--unqualified,-uИспользовать имена таблиц без квалификаторов.
-
Формат командной строки --usageОтображение текста справки и выход; то же, что и
--help. -
Формат командной строки --versionОтображение информации о версии и выход.
Индексы таблиц, перечисленные в выводе, упорядочены по ID.
© 2025 Oracle
Licensed under the GPLv2 License.