我们正试图将几个Tb放入MySQL Cluster,遗憾的是索引不适合内存。
有没有办法克服mysql的这种限制?
并行处理mysql进程范围操作吗?
我的数据在MYisam内部有一个3D点:(id x y z idkey someblob),有128个分区。由于内存限制,NDBCLuster无法加载数据。
索引遍历idkey(这是预先计算的peano-hilbert密钥)。总行数约为10 ^ 9.
谢谢阿曼。
修改 我的设置是2个datanodes 2 mysqld one mdm。 每个ndb 8Gb RAM,4核。
整个系统有30Tb Raid6 系统是linux Scientific LInux 6.0,集群是从源代码编译的7.1。
答案 0 :(得分:0)
听起来MySQL不适合这项任务(对不起)。我会查看Tokyo Tyrant,也许是MongoDB或任何其他分布式键值存储系统。还有专门的商业产品。
MongoDB是able to swap out some of it's indexes to the HD。我想你的问题是MySQL不能这样做(我不是MySQL人)。
答案 1 :(得分:0)
也许您可以尝试修改config.ini文件。
DataMemory=15000M
IndexMemory=2560M
但如果两个值太高,您将遇到此错误: 由于位图页面未对齐而无法使用!!
所以我还在努力解决它。祝你好运。
答案 2 :(得分:0)
当我只加载数据库表的结构时,我遇到了同样的问题。这意味着DataMemory
或IndexMemory
在这里没有帮助。
表格的数量也未达到MaxNoOfTables
的限制,因此也不是问题。
这里的解决方案是增加MaxNoOfOrderedIndexes
和MaxNoOfUniqueHashIndexes
的值,它们反映了群集中可以拥有的最大索引数。因此,如果数据库中有许多索引,请尝试相应地增加这些变量。
当然,必须在更改生效后才能rolling restart生效!