11

我想为 MySQL Cluster 6 实现 NDB Cluster。我想为具有至少 200 万条记录的非常庞大的数据结构执行此操作。

我想知道实现 NDB 集群是否有任何限制。例如,NDB 集群的 RAM 大小、数据库数量或数据库大小。

4

2 回答 2

18

200 万个数据库?我假设您的意思是“行”。

无论如何,关于限制:要记住的最重要的事情之一是 NDB/MySQL Cluster 不是通用数据库。最值得注意的是,连接操作,还有子查询和范围操作(查询,例如:从现在到一周前创建的订单)可能比您预期的要慢得多。这部分是因为数据分布在多个节点上。尽管已经进行了一些改进,但加入性能仍然可能非常令人失望。

另一方面,如果您需要处理许多(最好是小)并发事务(通常是单行更新/插入/删除主键查找)并且您设法将所有数据保存在内存中,那么它可能是一个非常可扩展和高性能的解决方案。

你应该问自己为什么要集群。如果您只是想要您现在拥有的普通数据库,除了增加了 99,999% 的可用性,那么您可能会失望。当然 MySQL 集群可以为您提供很好的可用性和正常运行时间,但是您的应用程序的工作负载可能不太适合集群所擅长的事情。此外,您还可以使用另一种高可用性解决方案来增加传统数据库的正常运行时间。

顺便说一句 - 这是根据文档的限制列表:http: //dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations.html

但不管你做什么,试试集群,看看它是否对你有好处。MySQL 集群不是“MySQL + 5 个九”。当你尝试时你会发现。

于 2009-12-30T14:43:59.003 回答
2

NDB 集群带有两种类型的存储选项。

1.在内存存储中。2.磁盘存储。

NDB 在内存数据存储中引入,在 7.4 版(MYSQL 5.6)以后开始支持磁盘存储。

当前版本 7.5(MySQL 5.7)支持磁盘存储,在这种情况下,将没有大小限制,因为数据将驻留在磁盘中,并且限制取决于您可用的磁盘存储空间。
磁盘存储配置 - https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-disk-data-symlinks.html

在 NDB 集群中的内存存储也相当成熟,您可以在管理节点 config.ini 文件中定义内存使用情况。示例 - DataMemory=3072M IndexMemory=384M

在平均表中(取决于存储在列中的数据)总数据库大小应小于 1GB,这可以轻松配置。

注意 - 在我自己的实现中,我面临一个性能挑战,因为 NDB 的性能随着表中行数的增加而下降。在高负载下,并发读取会随着行数的增加而下降。确保您不进行全表扫描并提供足够的 where 子句谓词。为了获得适当的性能,请根据您的查询模式正确定义二级索引。定义二级索引将再次增加内存消耗,因此请相应地规划您的查询模式和内存资源。

于 2017-10-08T13:12:53.333 回答