我正在寻找构建一个Rails应用程序,它将拥有一些超过5亿行的超大表.为了让事情变得活泼,我目前正在研究如何将大表拆分为更易于管理的块.我看到,从MySQL 5.1开始,有一个分区选项,这是一个可能的选项,但我不喜欢确定分区的列必须是表中主键的一部分的方式.
我真正想做的是根据写入的值拆分AR模型写入的表,但据我所知,没有办法做到这一点 - 是否有人对如何实现这一点有任何建议或任何替代策略?
谢谢
Arfon
MySQL中的分区列不限于主键.实际上,分区列根本不必是一个键(尽管将透明地创建一个分区列).您可以按RANGE,HASH,KEY和LIST进行分区(仅与RANGE类似,它是一组离散值).阅读MySQL手册,了解分区类型的概述.
还有其他解决方案,例如HScale - 一种中间件插件,可根据特定条件透明地对表进行分区.HiveDB是一个用于MySQL水平分区的开源框架.
除了分片和分区之外,您还应该使用某种聚类.最简单的设置是基于复制的设置,可帮助您将负载分散到多个物理服务器上.您还应该考虑更高级的集群解决方案,例如MySQL集群(可能由于数据库的大小而无法选择)和集群中间件(如Sequioa).
实际上我在前一段时间就堆栈溢出问题提出了一个关于MySQL缩放的相关问题,几天后我收集了大量有关该主题的信息后,我最终回答了自己的问题.也可能与你相关.