我想为MySQL群集6实现NDB群集。我想对非常庞大的数据结构进行此操作,其中最少有200万个记录。

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

有帮助吗?

解决方案

200万数据库?我的意思是“行”。

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

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

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

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

但是无论您做什么,请尝试群集,看看它是否对您有好处。 MySQL群集不是“ mysql + 5 nines”。您会发现什么时候尝试。

其他提示

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

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

NDB如在内存数据存储中以及在7.4版(MySQL 5.6)中引入的NDB开始支持磁盘存储。

当前版本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降解,表中的行数越来越多。在高负载并发下,读取将随着行的数量增加而降级。确保您不去进行全表扫描,并在子句谓词的情况下提供足够的扫描。为了适当的性能,根据您的查询模式正确定义辅助索引。定义辅助索引将再次增加内存消耗,因此请相应地计划查询模式和内存资源。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top