2009-12-30 61 views
9

我想为MySQL Cluster 6实现NDB集群。我希望以最少的200万条记录来处理非常庞大的数据结构。实现MySQL NDB集群有哪些限制?

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

回答

15

200万个数据库?我认为你的意思是“行”。

无论如何,关于局限性:要记住的最重要的事情之一是NDB/MySQL Cluster不是通用数据库。最值得注意的是,加入操作,但也包括子查询和范围操作(查询如:现在和一周前创建的订单),可能会比你期望的慢得多。部分原因是数据分布在多个节点上。尽管已经取得了一些改进,但Join的表现仍然非常令人失望。另一方面,如果你需要处理很多(最好是小的)并发事务(通常是通过主键进行单行更新/插入/删除查找),并且你需要将所有的数据保存在内存中,那么它可以是一个非常具有伸缩性和性能的解决方案。

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

BTW - 这里的限制,按照文档的列表:http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations.html

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

1

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子句谓词。 为了获得正确的性能,请根据您的查询模式正确定义二级索引。 定义二级索引会再次增加内存消耗,因此应相应地规划查询模式和内存资源。