21.5.28 ndb_size.pl — Оценка требований к ресурсам NDBCLUSTER
Это скрипт на Perl, который можно использовать для оценки объёма дискового пространства, необходимого для базы данных MySQL, если её перевести на использование движка хранения NDBCLUSTER. В отличие от других утилит, обсуждаемых в этой части, он не требует доступа к NDB Cluster (на самом деле, для этого нет причины). Однако ему требуется доступ к серверу MySQL, на котором находится база данных, подлежащая тестированию.
Требования
Запущенный сервер MySQL. Серверу не обязательно поддерживать NDB Cluster.
Установленный Perl.
Модуль
DBI, который можно получить из CPAN, если он ещё не входит в состав вашей установки Perl. (Многие дистрибутивы Linux и других операционных систем предоставляют свои пакеты для этой библиотеки.)Пользователь MySQL с необходимыми привилегиями. Если вы не хотите использовать существующую учётную запись, то создание новой с помощью
GRANT USAGE ON—гдеdb_name.*db_name— это имя базы данных, подлежащей исследованию—достаточно для этой цели.
ndb_size.pl также можно найти в исходных кодах MySQL в storage/ndb/tools.
Варианты, которые можно использовать с ndb_size.pl, представлены в следующей таблице. Дополнительные описания следуют за таблицей.
Таблица 21.44 Параметры командной строки, используемые с программой ndb_size.pl
| Формат | Описание | Добавленные, устаревшие или удалённые параметры |
|---|---|---|
| База данных или базы данных для проверки; список, разделенный запятыми; по умолчанию ALL (используются все базы данных, найденные на сервере) | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Укажите хост и необязательный порт в формате host[:port] | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Укажите сокет для подключения | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Укажите имя пользователя MySQL | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Укажите пароль пользователя MySQL | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Установите формат вывода (текст или HTML) | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Пропустить таблицы в списке, разделённом запятыми | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Пропустить базы данных в списке, разделённом запятыми | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Сохраняет все запросы к базе данных в указанный файл | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Загружает все запросы из указанного файла; не подключается к базе данных | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Определяет таблицу для расчёта размера уникальных индексов | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) |
Использование
perl ndb_size.pl [--database={db_name|ALL}] [--hostname=host[:port]] [--socket=socket] \
[--user=user] [--password=password] \
[--help|-h] [--format={html|text}] \
[--loadqueries=file_name] [--savequeries=file_name]
По умолчанию эта утилита пытается проанализировать все базы данных на сервере. Вы можете указать отдельную базу данных, используя опцию --database; стандартное поведение можно сделать явным, используя ALL для имени базы данных. Также вы можете исключить одну или несколько баз данных, используя опцию --excludedbs со списком баз данных, разделенных запятыми, которые следует пропустить. Аналогичным образом, вы можете пропустить определённые таблицы, перечислив их имена, разделённые запятыми, после необязательной опции --excludetables. Имя хоста можно указать с помощью --hostname; по умолчанию — localhost. Вы можете указать порт в дополнение к хосту, используя формат host:port для значения --hostname. Номер порта по умолчанию — 3306. При необходимости можно также указать сокет; по умолчанию — /var/lib/mysql.sock. Имя пользователя и пароль MySQL могут быть указаны с помощью соответствующих опций. Также можно управлять форматом вывода, используя опцию --format; она может принимать значения html или text, причём text является значением по умолчанию. Пример текстового вывода показан здесь:
$> ndb_size.pl --database=test --socket=/tmp/mysql.sock
ndb_size.pl report for database: 'test' (1 tables)
--------------------------------------------------
Connected to: DBI:mysql:host=localhost;mysql_socket=/tmp/mysql.sock
Including information for versions: 4.1, 5.0, 5.1
test.t1
-------
DataMemory for Columns (* means varsized DataMemory):
Column Name Type Varsized Key 4.1 5.0 5.1
HIDDEN_NDB_PKEY bigint PRI 8 8 8
c2 varchar(50) Y 52 52 4*
c1 int(11) 4 4 4
-- -- --
Fixed Size Columns DM/Row 64 64 12
Varsize Columns DM/Row 0 0 4
DataMemory for Indexes:
Index Name Type 4.1 5.0 5.1
PRIMARY BTREE 16 16 16
-- -- --
Total Index DM/Row 16 16 16
IndexMemory for Indexes:
Index Name 4.1 5.0 5.1
PRIMARY 33 16 16
-- -- --
Indexes IM/Row 33 16 16
Summary (for THIS table):
4.1 5.0 5.1
Fixed Overhead DM/Row 12 12 16
NULL Bytes/Row 4 4 4
DataMemory/Row 96 96 48
(Includes overhead, bitmap and indexes)
Varsize Overhead DM/Row 0 0 8
Varsize NULL Bytes/Row 0 0 4
Avg Varside DM/Row 0 0 16
No. Rows 0 0 0
Rows/32kb DM Page 340 340 680
Fixedsize DataMemory (KB) 0 0 0
Rows/32kb Varsize DM Page 0 0 2040
Varsize DataMemory (KB) 0 0 0
Rows/8kb IM Page 248 512 512
IndexMemory (KB) 0 0 0
Parameter Minimum Requirements
------------------------------
* indicates greater than default
Parameter Default 4.1 5.0 5.1
DataMemory (KB) 81920 0 0 0
NoOfOrderedIndexes 128 1 1 1
NoOfTables 128 1 1 1
IndexMemory (KB) 18432 0 0 0
NoOfUniqueHashIndexes 64 0 0 0
NoOfAttributes 1000 3 3 3
NoOfTriggers 768 5 5 5
Для целей отладки массивы Perl, содержащие запросы, выполняемые этим скриптом, можно прочитать из файла, указанного с помощью --savequeries; файл, содержащий такие массивы для чтения во время выполнения скрипта, может быть указан с помощью --loadqueries. Ни одна из этих опций не имеет значения по умолчанию.
Для получения вывода в формате HTML используйте опцию --format и перенаправьте вывод в файл, как показано здесь:
$> ndb_size.pl --database=test --socket=/tmp/mysql.sock --format=html > ndb_size.html
(Без перенаправления вывод отправляется в stdout.)
Вывод этого скрипта включает следующую информацию:
Минимальные значения параметров конфигурации
DataMemory,IndexMemory,MaxNoOfTables,MaxNoOfAttributes,MaxNoOfOrderedIndexesиMaxNoOfTriggers, необходимых для размещения проанализированных таблиц.Требования к памяти для всех таблиц, атрибутов, упорядоченных индексов и уникальных хеш-индексов, определённых в базе данных.
IndexMemoryиDataMemory, необходимые для каждой таблицы и строки таблицы.
© 2025 Oracle
Licensed under the GPLv2 License.