这是一个Perl脚本,可用于估计如果将MySQL数据库转换为使用NDBCLUSTER
存储引擎。与本节讨论的其他实用程序不同,它不需要访问NDB集群(事实上,它没有理由这样做)。但是,它确实需要访问要测试的数据库所在的MySQL服务器。
需求
正在运行的MySQL服务器。服务器实例不需要为NDB集群提供支持。
Perl的工作安装。
的
DBI
模块,如果它还不是Perl安装的一部分,可以从CPAN中获得。(许多Linux和其他操作系统发行版都为这个库提供了自己的包。)具有必要权限的MySQL用户帐户。如果不希望使用现有帐户,请使用
拨款用途
在那里db_name
. *db_name
要检查的数据库的名称—这就足够了。
ndb_size.pl
也可以在MySQL源代码中找到存储/ ndb /工具
.
可用于的选项ndb_size.pl如下表所示。其他描述见下表。
表23.48 ndb_size.pl程序使用的命令行选项
格式 | 描述 | 添加、弃用或删除 |
---|---|---|
数据库或数据库进行检查;逗号分隔的列表;默认为ALL(使用服务器上的所有数据库) | (所有基于MySQL 8.0的NDB版本均支持) |
|
指定主机和可选端口为host[:port] | (所有基于MySQL 8.0的NDB版本均支持) |
|
指定要连接的套接字 | (所有基于MySQL 8.0的NDB版本均支持) |
|
指定MySQL用户名 | (所有基于MySQL 8.0的NDB版本均支持) |
|
指定MySQL用户密码 | (所有基于MySQL 8.0的NDB版本均支持) |
|
设置输出格式(文本或HTML) | (所有基于MySQL 8.0的NDB版本均支持) |
|
跳过逗号分隔列表中的任何表 | (所有基于MySQL 8.0的NDB版本均支持) |
|
在逗号分隔的列表中跳过任何数据库 | (所有基于MySQL 8.0的NDB版本均支持) |
|
将数据库上的所有查询保存到指定的文件 | (所有基于MySQL 8.0的NDB版本均支持) |
|
从指定的文件加载所有查询;没有连接到数据库 | (所有基于MySQL 8.0的NDB版本均支持) |
|
指定处理唯一索引大小计算的表 | (所有基于MySQL 8.0的NDB版本均支持) |
使用
Perl ndb_size.pl[——数据库={db_name|所有}][——主机名=宿主[:港口]][——套接字=套接字\[——user= .用户][——密码=密码\[——帮助| - h][——格式= {html文本|}]\[——loadqueries =file_name][——savequeries =file_name]
默认情况下,此实用程序尝试分析服务器上的所有数据库。方法指定单个数据库——数据库
选择;默认行为可以通过使用显式所有
为数据库的名称。属性也可以排除一个或多个数据库——excludedbs
选项,其中包含要跳过的数据库的名称,以逗号分隔。类似地,可以通过在可选选项后面列出用逗号分隔的名称来跳过特定的表——excludetables
选择。主机名可以使用——主机名
;默认为本地主机
.除指定使用的主机外,还可以指定端口宿主
:港口
的值的格式——主机名
.默认端口号为3306。如果需要,还可以指定套接字;默认为/var/lib/mysql.sock
.MySQL用户名和密码可以指定相应的选项显示。控件也可以控制输出的格式- - -格式
选择;这可以取任意一个值超文本标记语言
或文本
,文本
默认值。文本输出示例如下:
Shell > ndb_size.pl——database=test——socket=/tmp/mysql。袜子ndb_size.pl报告数据库:“测试”(表1 ) -------------------------------------------------- 连接到:DBI: mysql:主机= localhost; mysql_socket = / tmp / mysql。包括版本:4.1,5.0,5.1测试的信息。t1 - DataMemory列(*意味着varsized DataMemory):列名称类型varsized关键4.1 5.0 5.1 HIDDEN_NDB_PKEY bigint PRI 8 8 8 c2 varchar (50) Y 52 52 4 * 4 c1 int (11) 4 4 -- -- -- 固定大小列DM /行64 64 12 DM Varsize列/行索引0 0 4 DataMemory:索引名称类型4.1 5.0 5.1主要BTREE 16 16 -- -- -- 总指数DM /索引行16 16 IndexMemory:索引名称4.1 5.0 5.1主要33 16 16 -- -- -- 索引IM / 33 16行16汇总(表):4.1 5.0 5.1固定开销DM/第12行12 16 NULL字节/第4行4 4数据内存/第96行96 48(包括开销、位图和索引)可变开销DM/行0 0 8可变NULL字节/行0 0 4平均开销DM/行0 0 16行0 0 0行/ 32 KB DM页面340 340 680 Fixedsize DataMemory (KB) 0 0 0 0 0 2040行/ 32 KB Varsize DM页面Varsize DataMemory (KB) 0 0 0 / 8 KB IM 248页512行512 IndexMemory (KB) 0 0 0参数最低要求 ------------------------------ * 表明大于默认的参数默认4.1 5.0 5.1 DataMemory (KB) 81920 0 0 0 NoOfOrderedIndexes 128 1 128 1 NoOfTables 1 1 1 IndexMemory (KB) 18432 0 0 0 NoOfUniqueHashIndexes 64 0 0 0 NoOfAttributes 1000 3 3 3 NoOfTriggers 768 5 55
出于调试目的,包含此脚本运行的查询的Perl数组可以从指定的文件中读取,也可以保存到使用的文件中——savequeries
;包含在脚本执行期间要读取的此类数组的文件可以使用——loadqueries
.这两个选项都没有默认值。
要生成HTML格式的输出,请使用- - -格式
选项并将输出重定向到一个文件,如下所示:
Shell > ndb_size.pl——database=test——socket=/tmp/mysql。Sock——format=html > ndb_size.html
(如果没有重定向,输出将被发送到stdout
)。
该脚本的输出包括以下信息:
的最小值
DataMemory
,IndexMemory
,MaxNoOfTables
,MaxNoOfAttributes
,MaxNoOfOrderedIndexes
,MaxNoOfTriggers
配置参数以适应所分析的表。数据库中定义的所有表、属性、有序索引和唯一哈希索引的内存需求。
的
IndexMemory
而且DataMemory
每个表和表行都需要。