这是一个 Perl 脚本,可用于估计如果 MySQL 数据库转换为使用 NDBCLUSTER
存储引擎所需的空间大小。与本节中讨论的其他实用程序不同,它不需要访问 NDB 集群(实际上,它没有理由这样做)。但是,它需要访问所要测试数据库所在的 MySQL 服务器。
ndb_size.pl 在 NDB 8.4.3 及更高版本中已弃用,不再受支持。您应该预计它将在 NDB 集群分发的未来版本中被移除,并相应地修改任何依赖的应用程序。
要求
运行中的 MySQL 服务器。服务器实例不需要提供对 NDB 集群的支持。
一个正常工作的 Perl 安装。
DBI
模块,如果它不在您的 Perl 安装中,则可以从 CPAN 获取。 (许多 Linux 和其他操作系统发行版为该库提供了自己的软件包。)具有必要权限的 MySQL 用户帐户。如果您不想使用现有帐户,则使用
GRANT USAGE ON
(其中db_name
.*db_name
是要检查的数据库的名称)创建一个帐户就足够了。
ndb_size.pl
也可以在 MySQL 源代码的 storage/ndb/tools
中找到。
可以在 ndb_size.pl 中使用的选项如下表所示。其他描述在表格之后。
用法
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
。