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 程序的命令行选项

FormatDescription添加,不建议使用或删除
--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选项控制输出的格式。可以采用htmltext的值,默认值为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.)

该脚本的输出包括以下信息: