25.5.29 ndb_size.pl — NDBCLUSTER 大小需求估算器
这是一个Perl脚本,可以用来估计MySQL数据库如果转换为使用NDBCLUSTER
存储引擎所需的空间大小。与其他在本节中讨论的工具不同,它不需要访问NDB集群(事实上,没有理由这样做)。但是,它确实需要访问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一起使用的选项。附加描述在表之后。
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
。