ndb_size.pl — NDBCLUSTER大小需求估算器
这是一个Perl脚本,如果将MySQL数据库转换为使用NDBCLUSTER
存储引擎,该脚本可用于估计MySQL数据库所需的空间量。与本节讨论的其他实用程序不同,它不需要访问NDB群集(实际上,没有理由这样做)。但是,它确实需要访问要测试的数据库所在的MySQL服务器。
要求
- 正在运行的MySQL服务器。该服务器实例不必为NDB群集提供支持。
- Perl的有效安装。
- 如果该
DBI
模块尚未包含在Perl安装中,则可以从CPAN获得。(许多Linux和其他操作系统发行版为此库提供了自己的软件包。) - 具有必要特权的MySQL用户帐户。如果你不希望使用现有的帐户,然后使用一个创造-where 是在该数据库的名称检查,是足以达到此目的。
GRANT USAGE ON db_name.*
db_name
ndb_size.pl
也可以在中的MySQL源代码中找到storage/ndb/tools
。
下表包含特定于NDB群集程序ndb_size.pl的选项。附加说明如下表。有关大多数NDB群集程序(包括ndb_size.pl)通用的选项,请参见“ NDB群集程序的通用选项— NDB群集程序的通用选项”。
ndb_size.pl程序的命令行选项
格式 | 描述 | 添加,不建议使用或删除 |
---|---|---|
| 一个或多个要检查的数据库;接受以逗号分隔的列表;缺省值为ALL(使用服务器上找到的所有数据库) | (在所有基于MySQL 8.0的版本中受支持) |
| 指定主机和可选端口作为主机[:port] | (在所有基于MySQL 8.0的版本中受支持) |
| 指定要连接的套接字 | (在所有基于MySQL 8.0的版本中受支持) |
| 指定一个MySQL用户名 | (在所有基于MySQL 8.0的版本中受支持) |
| 指定一个MySQL用户密码 | (在所有基于MySQL 8.0的版本中受支持) |
| 设置输出格式(文本或HTML) | (在所有基于MySQL 8.0的版本中受支持) |
| 跳过以逗号分隔的表列表中的任何表 | (在所有基于MySQL 8.0的版本中受支持) |
| 跳过数据库中以逗号分隔的所有数据库 | (在所有基于MySQL 8.0的版本中受支持) |
| 将所有查询保存到数据库到指定的文件中 | (在所有基于MySQL 8.0的版本中受支持) |
| 从指定的文件加载所有查询;没有连接到数据库 | (在所有基于MySQL 8.0的版本中受支持) |
| 指定一个表来处理唯一的索引大小计算 | (在所有基于MySQL 8.0的版本中受支持) |
用法
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]
By default, this utility attempts to analyze all databases on the server. You can specify a single database using the --database
option; the default behavior can be made explicit by using ALL
for the name of the database. You can also exclude one or more databases by using the --excludedbs
option with a comma-separated list of the names of the databases to be skipped. Similarly, you can cause specific tables to be skipped by listing their names, separated by commas, following the optional --excludetables
option. A host name can be specified using --hostname
; the default is localhost
. You can specify a port in addition to the host using host
:port
format for the value of --hostname
. The default port number is 3306. If necessary, you can also specify a socket; the default is /var/lib/mysql.sock
. A MySQL user name and password can be specified the corresponding options shown. It also possible to control the format of the output using the --format
option; this can take either of the values html
or text
, with text
being the default. An example of the text output is shown here:
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
。)
该脚本的输出包括以下信息:
- 为最小值
DataMemory
,IndexMemory
,MaxNoOfTables
,MaxNoOfAttributes
,MaxNoOfOrderedIndexes
,和MaxNoOfTriggers
以容纳表所需的配置参数进行分析。 - 数据库中定义的所有表,属性,有序索引和唯一哈希索引的内存要求。
- 在
IndexMemory
和DataMemory
每个表和表行所需。