Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  ndb_size.pl — NDBCLUSTER Size Requirement Estimator

25.5.29 ndb_size.pl — NDBCLUSTER 大小需求估算器

这是一个 Perl 脚本,用于估算 MySQL 数据库转换为使用 NDBCLUSTER 存储引擎时所需的空间。与本节中讨论的其他实用程序不同的是,它不需要访问 NDB 集群(实际上,没有理由这样做)。然而,它需要访问要测试的 MySQL 服务器。

要求

  • 一个正在运行的 MySQL 服务器。服务器实例不需要支持 NDB 集群。

  • 一个工作的 Perl 安装。

  • DBI 模块,可以从 CPAN 获得,如果它不是 Perl 安装的一部分。(许多 Linux 和其他操作系统发行版提供了该库的包。)

  • 一个拥有必要权限的 MySQL 用户帐户。如果您不想使用现有的帐户,那么使用 GRANT USAGE ON db_name.*—其中 db_name 是要检查的数据库的名称—足以满足这个目的。

ndb_size.pl 也可以在 MySQL 源代码中找到,位于 storage/ndb/tools

可以与 ndb_size.pl 一起使用的选项如下表所示。表后面是详细描述。

表 25.49 与程序 ndb_size.pl 一起使用的命令行选项

Format Description Added, Deprecated, or Removed

--database=string

要检查的数据库或数据库列表;逗号分隔的列表;默认是 ALL(使用服务器上的所有数据库)

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--hostname=string

指定主机和可选端口,以 host[:port] 格式

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--socket=path

指定要连接的套接字

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--user=string

指定 MySQL 用户名

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--password=password

指定 MySQL 用户密码

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--format=string

设置输出格式(文本或 HTML)

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--excludetables=list

跳过列表中的任何表

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--excludedbs=list

跳过列表中的任何数据库

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--savequeries=path

将所有查询保存到指定的文件中

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--loadqueries=path

从指定的文件中加载所有查询;不连接到数据库

(在所有基于 MySQL 8.3 的 NDB 版本中支持)

--real_table_name=string

指定处理唯一索引大小计算的表

(在所有基于 MySQL 8.3 的 NDB 版本中支持)


使用

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 选项控制输出格式;该选项可以取 htmltext 值, 默认为 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。)

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