21.4.29 ndb_size.pl — NDBCLUSTER 大小需求估算器
这是一个 Perl 脚本,如果将其转换为使用NDBCLUSTER存储引擎,则可用于估算 MySQL 数据库所需的空间量。与本节中讨论的其他 Util 不同,它不需要访问 NDB 群集(实际上,没有理由这样做)。但是,它确实需要访问要测试的数据库所在的 MySQL 服务器。
Requirements
-
正在运行的 MySQL 服务器。该服务器实例不必为 NDB 群集提供支持。
-
Perl 的有效安装。
-
DBI
模块,如果尚未安装 Perl,则可以从 CPAN 获得。 (许多 Linux 和其他 os 发行版为此库提供了自己的软件包.) -
具有必要特权的 MySQL 用户帐户。如果您不希望使用现有帐户,则使用
GRANT USAGE ON db_name.*
(其中*db_name
*是要检查的数据库的名称)创建一个帐户就足够了。
ndb_size.pl
也可以在storage/ndb/tools
的 MySQL 源代码中找到。
下 table 包括特定于 NDB 群集程序ndb_size.pl的选项。附加说明如下 table 所示。有关大多数 NDB 群集程序(包括ndb_size.pl)共有的选项,请参见第 21.4.32 节“ NDB 群集程序的公用选项-NDB 群集程序的公用选项”。
table21.262 ndb_size.pl 程序的命令行选项
Format | Description | 添加,不建议使用或删除 |
---|---|---|
--database=dbname | 数据库或要检查的数据库;逗号分隔的列 table;默认为 ALL(使用服务器上找到的所有数据库) | (在所有基于 MySQL 5.7 的版本中受支持) |
--hostname[:port] | 指定主机和可选端口作为主机[:port] | (在所有基于 MySQL 5.7 的版本中受支持) |
--socket=file_name | 指定要连接的 socket | (在所有基于 MySQL 5.7 的版本中受支持) |
--user=string | 指定 MySQL 用户名 | (在所有基于 MySQL 5.7 的版本中受支持) |
--password=string | 指定 MySQL 用户密码 | (在所有基于 MySQL 5.7 的版本中受支持) |
--format=string | 设置输出格式(文本或 HTML) | (在所有基于 MySQL 5.7 的版本中受支持) |
--excludetables=tbl_list | 跳过逗号分隔列 table 中的所有 table | (在所有基于 MySQL 5.7 的版本中受支持) |
--excludedbs=db_list | 跳过逗号分隔列 table 中的所有数据库 | (在所有基于 MySQL 5.7 的版本中受支持) |
--savequeries=file | 将数据库上的所有查询保存到指定的文件中 | (在所有基于 MySQL 5.7 的版本中受支持) |
--loadqueries=file | 从指定的文件加载所有查询;没有连接到数据库 | (在所有基于 MySQL 5.7 的版本中受支持) |
--real_table_name=table | 指定 table 以处理唯一的索引大小计算 | (在所有基于 MySQL 5.7 的版本中受支持) |
Usage
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]
默认情况下,此 Util 尝试分析服务器上的所有数据库。您可以使用--database
选项指定一个数据库。通过使用ALL
作为数据库名称,可以使默认行为明确。您还可以通过使用--excludedbs
选项以及要跳过的数据库名称的逗号分隔列 table 来排除一个或多个数据库。同样,您可以通过在可选的--excludetables
选项后列出它们的名称(以逗号分隔)来跳过特定的 table。主机名可以使用--hostname
指定;默认值为localhost
。您可以使用* host
: port
*格式为--hostname
的值指定主机以外的端口。默认端口号是 3306.如有必要,您还可以指定一个套接字。默认值为/var/lib/mysql.sock
。可以指定一个 MySQL 用户名和密码,并显示相应的选项。也可以使用--format
选项控制输出的格式。可以采用html
或text
的值,默认值为text
。文本输出的示例如下所示:
shell> 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
选项并将输出重定向到文件,如下所示:
shell> ndb_size.pl --database=test --socket=/tmp/mysql.sock --format=html > ndb_size.html
(没有重定向,输出将发送到stdout
.)
该脚本的输出包括以下信息:
-
容纳分析 table 所需的DataMemory,IndexMemory,MaxNoOfTables,MaxNoOfAttributes,MaxNoOfOrderedIndexes和MaxNoOfTriggers配置参数的最小值。
-
数据库中定义的所有 table,属性,有序索引和唯一哈希索引的内存要求。
-
每个 table 格和 table 格行需要IndexMemory和DataMemory。