### 23.5.28 ndb_size.pl — NDBCLUSTER 大小需求估计器

[](<>)

这是一个 Perl 脚本，可用于估计 MySQL 数据库转换为使用[`NDBCLUSTER`](mysql-cluster.html)存储引擎。与本节讨论的其他实用程序不同，它不需要访问 NDB Cluster（事实上，它没有理由这样做）。但是，它确实需要访问要测试的数据库所在的 MySQL 服务器。

#### 要求

-   一个正在运行的 MySQL 服务器。服务器实例不必为 NDB Cluster 提供支持。

-   Perl 的工作安装。

-   这`DBI`模块，如果它还不是 Perl 安装的一部分，可以从 CPAN 获得。（许多 Linux 和其他操作系统发行版都为此库提供了自己的软件包。）

-   具有必要权限的 MySQL 用户帐户。如果您不想使用现有帐户，请使用`授予使用 *`数据库名称`*.*`-在哪里*`数据库名称`*是要检查的数据库的名称——足以满足此目的。

`ndb_size.pl`也可以在 MySQL 源码中找到`存储/ndb/工具`.

可以使用的选项[**数据库\_大小.pl**](mysql-cluster-programs-ndb-size-pl.html)如下表所示。附加说明如下表。

[](<>)

**表 23.48 与程序 ndb 一起使用的命令行选项\_大小.pl**

| 格式 | 描述 | 添加、弃用或删除 |
| --- | --- | -------- |
| `[--database=string](mysql-cluster-programs-ndb-size-pl.html#option_ndb_size_pl_options)` | 数据库或要检查的数据库；逗号分隔的列表；默认为 ALL（使用服务器上找到的所有数据库） | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--hostname=string](mysql-cluster-programs-ndb-size-pl.html#option_ndb_size_pl_options)` | 在主机中指定主机和可选端口[：港口:]格式 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--socket=path](mysql-cluster-programs-ndb-size-pl.html#option_ndb_size_pl_options)` | 指定要连接的套接字 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--user=string](mysql-cluster-programs-ndb-size-pl.html#option_ndb_size_pl_options)` | 指定 MySQL 用户名 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--password=password](mysql-cluster-programs-ndb-size-pl.html#option_ndb_size_pl_options)` | 指定 MySQL 用户密码 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--format=string](mysql-cluster-programs-ndb-size-pl.html#option_ndb_size_pl_format)` | 设置输出格式（文本或 HTML） | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--excludetables=list](mysql-cluster-programs-ndb-size-pl.html#option_ndb_size_pl_options)` | 跳过逗号分隔列表中的任何表格 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--excludedbs=list](mysql-cluster-programs-ndb-size-pl.html#option_ndb_size_pl_options)` | 跳过逗号分隔列表中的任何数据库 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--savequeries=path](mysql-cluster-programs-ndb-size-pl.html#option_ndb_size_pl_debugging)` | 将数据库上的所有查询保存到指定的文件中 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--loadqueries=path](mysql-cluster-programs-ndb-size-pl.html#option_ndb_size_pl_debugging)` | 从指定的文件加载所有查询；没有连接到数据库 | （所有基于 MySQL 8.0 的 NDB 版本都支持） |
| `[--real_table_name=string](mysql-cluster-programs-ndb-size-pl.html#option_ndb_size_pl_options)` | 指定表来处理唯一索引大小计算 | （所有基于 MySQL 8.0 的 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]
```

[](<>)默认情况下，此实用程序会尝试分析服务器上的所有数据库。您可以使用`- 数据库`选项;默认行为可以通过使用明确`全部`为数据库的名称。您还可以使用`--excludedbs`带有要跳过的数据库名称的逗号分隔列表的选项。同样，您可以通过列出它们的名称来跳过特定的表，用逗号分隔，跟随可选`--排除表`选项。可以使用指定主机名`- 主机名`;默认是`本地主机`.除了使用主机之外，您还可以指定一个端口*`主持人`*：*`港口`*值的格式`- 主机名`.默认端口号为3306。如果需要，还可以指定一个socket；默认是/var/lib/mysql.sock`.`一个 MySQL 用户名和密码可以指定相应的选项显示。也可以使用- 格式`选项;`这可以采用任何一个值html`要么`文本`， 和`文本`作为默认值。`此处显示了文本输出的示例：出于调试目的，包含此脚本运行的查询的 Perl 数组可以从指定的文件中读取，使用可以保存到文件中使用

```
$> 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
```

[](<>)--保存查询`;`可以使用指定包含要在脚本执行期间读取的此类数组的文件--加载查询`.`这些选项都没有默认值。

[](<>)要生成 HTML 格式的输出，请使用`- 格式`选项并将输出重定向到文件，如下所示：

```
$> ndb_size.pl --database=test --socket=/tmp/mysql.sock --format=html > ndb_size.html
```

（没有重定向，输出被发送到`标准输出`.)

此脚本的输出包括以下信息：

-   的最小值[`数据存储器`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-datamemory), [`索引内存`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-indexmemory), [`MaxNoOfTables`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnooftables), [`MaxNoOfAttributes`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnoofattributes), [`MaxNoOfOrderedIndexes`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnooforderedindexes)， 和[`MaxNoOfTriggers`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnooftriggers)容纳所分析的表所需的配置参数。

-   数据库中定义的所有表、属性、有序索引和唯一哈希索引的内存要求。

-   这[`索引内存`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-indexmemory)和[`数据存储器`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-datamemory)每个表和表行都需要。
