实现MySQL NDB Cluster有哪些局限性?

时间:2009-12-30 14:34:08

标签: mysql cluster-computing bigdata mysql6

我想为MySQL Cluster 6实现NDB Cluster。我想用非常庞大的数据结构来完成这项工作,最少有200万条记录。

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

2 个答案:

答案 0 :(得分:15)

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

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

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

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

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

但不管你做什么,试试群集,看看它对你有好处。 MySQL集群不是“MySQL + 5个9”。你会在尝试时找到答案。

答案 1 :(得分:1)

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

1.在内存中。 2.Disk存储。

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

在一个平均表中(取决于存储在列中的数据)总db大小应该小于1GB,这可以很容易地配置。

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