我刚刚在一台相当不错的机器(IBM x3650 M3)上设置了一个 mysql 集群,该机器有 24GB 内存、xeon 6core、SAS 6Gbps HDD。运行 Debian Lenny 5。64 位。
Ndb 版本为 7.1.9a。我们在 MyISAM 上的数据库大小约为 3.2 GB。对于 ndbengine,Ndb_size 估计为 58GB。
以下是关于我的数据库的一些信息。150 个通用表用于全局用途。每个客户有 130 个表。因此,130 x 115(客户)= 14950 个表。
一个数据库上有 14000 个表是正常的吗?我们这样做的原因是,易于维护和根据客户进行定制。
现在的问题是,ndb 集群只能支持 20320 个表。但如果我没记错的话,它可以在一个表中支持 5,000,000,000 行。
我真正头疼的是,我的集群数据节点在没有任何数据的情况下启动不到两分钟。但是一旦将我的表转换为 ndb,而且只有 2000 个表,数据节点至少需要 30 到 40 分钟才能启动。这正常吗?如果我将所有表都转换为 ndb,是否需要更长时间?
或者说,如果将我的 14000 个表的数据合并为一个表(即 130 个表),这会有帮助吗?
或者我做错了什么?我很快就会附上我的 config.ini 文件。以下是我的配置的简单概述
数据内存 = 14G 索引内存 = 3GB 最大表数量 = 14000 最大属性数量 = 78000
我只是先用 2000 个表测试这些值。
请指教如何提高启动速度。请指出我哪里做错了。提前谢谢大家!
答案1
如果您能够更改数据库架构,规范化直到痛苦,非规范化直到成功。按数据节点对数据进行分区,直到满足您的性能要求,但不要忽略副本节点。如果您担心节点启动和启动时间,请查看磁盘访问/读取速度。查看您的 raid 配置。镜像 raid 读取优于写入。
也许固态硬盘会提供更好的读取速度?