21.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
(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 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=latin1
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
Для получения дополнительной информации об этих свойствах таблиц см. Раздел 13.1.18.9, «Установка параметров комментариев 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;
(Для получения дополнительной информации о показанных инструкциях и объектах, созданных ими, см. Раздел 21.6.11.1, «Объекты данных на диске NDB Cluster», а также Раздел 13.1.15, «CREATE LOGFILE GROUP Statement» и Раздел 13.1.19, «CREATE TABLESPACE Statement».)
Теперь мы можем создать и заполнить версию таблицы 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
(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: 346
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 2
FragmentCount: 2
FragmentCountType: ONE_PER_LDM_PER_NODE
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
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 .
Для полностью реплицированных таблиц ndb_desc отображает только узлы, содержащие реплики фрагментов первичного разбиения; узлы с репликами фрагментов копий (только) игнорируются. Начиная с NDB 7.5.4, вы можете получить такую информацию, используя клиент mysql, из таблиц table_distribution_status, table_fragments, table_info и table_replicas в базе данных ndbinfo.
Опции, которые могут быть использованы с ndb_desc, показаны в следующей таблице. Дополнительные описания следуют за таблицей.
Таблица 21.29 Параметры командной строки, используемые с программой ndb_desc
| Формат | Описание | Добавлен, устарел или удален |
|---|---|---|
| Показать следующее значение для столбца AUTO_INCREMENT, если таблица имеет таковой | ДОБАВЛЕН: NDB 7.6.14 | |
| Включить информацию о разбиении для таблиц BLOB в выходные данные. Требуется использование параметра -p | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Директория, содержащая наборы символов | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Количество попыток повторного подключения перед отказом | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Количество секунд ожидания между попытками соединения с сервером управления | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| То же, что и --ndb-connectstring | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Показать дополнительную информацию о таблице, такую как база данных, схема, имя и внутренний идентификатор | ДОБАВЛЕН: NDB 7.6.14 | |
| Запись файла ядра при ошибке; используется при отладке | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Имя базы данных, содержащей таблицу | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Чтение заданного файла после чтения глобальных файлов | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Чтение параметров по умолчанию только из указанного файла | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Также читать группы с concat(group, suffix) | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Включить сопоставления разделов с узлами данных в выходные данные; требуется --extra-partition-info | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Отображать информацию о разделах | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Отобразить текст справки и выйти | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Чтение указанного пути из файла авторизации | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Установить строку подключения для подключения к ndb_mgmd. Синтаксис: "[nodeid=id;][host=]hostname[:port]". Перезаписывает записи в NDB_CONNECTSTRING и my.cnf | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| То же, что и --ndb-connectstring | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Установить идентификатор узла для этого узла, переопределяя любой идентификатор, установленный параметром --ndb-connectstring | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Включить оптимизации для выбора узлов для транзакций. Включено по умолчанию; используйте --skip-ndb-optimized-node-selection для отключения | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Не читать параметры по умолчанию из файла параметров, кроме файла авторизации | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Вывести список аргументов программы и завершить работу | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Количество попыток повторного подключения (раз в секунду) | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Указать таблицу, в которой нужно найти индекс. При использовании этого параметра -p и -n не имеют эффекта и игнорируются | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Использовать имена таблиц без квалификаторов | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Отобразить текст справки и выйти; то же, что и --help | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Отобразить информацию о версии и выйти | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) |
-
--auto-inc,-aПоказать следующее значение для столбца
AUTO_INCREMENTтаблицы, если оно есть. -
--blob-info,-bВключить информацию о подчиненных столбцах
BLOBиTEXT.Использование этого параметра также требует использования параметра
--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Тип Строка Значение по умолчанию [none]То же, что и --ndb-connectstring.
-
--context,-xПоказать дополнительную контекстную информацию о таблице, такую как схема, имя базы данных, имя таблицы и внутренний идентификатор таблицы.
-
--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 узла для этого узла, переопределяя любой ID, заданный с помощью --ndb-connectstring.
-
--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.5.3 и более поздних версиях, индексы таблиц, перечисленные в выводе, упорядочены по ID. Ранее это не было детерминированным и могло меняться в зависимости от платформы. (Ошибка #81763, Ошибка #23547742)
© 2025 Oracle
Licensed under the GPLv2 License.