我们有一个大约70 GB的InnoDB数据库,我们预计它将在future 2到3年内增长到几百GB.大约60%的数据属于一个表.目前数据库运行得很好,因为我们有一个64 GB内存的服务器,所以几乎整个数据库都可以放入内存,但我们担心future 数据量会大得多.现在我们正在考虑一些拆分表的方法(尤其是占数据最大部分的表),我现在想知道,什么是最好的方法.
我目前知道的 Select 是
- 使用5.1版附带的MySQL分区
- 使用某种封装数据分区的第三方库(如hibernate碎片)
- 在应用程序中自己实现它
我们的应用程序是基于J2EE和EJB2.1构建的(希望有一天我们会切换到EJB3).
你有什么建议?
编辑(2011-02-11):
编辑(2014-06-04):
这种设置应该持续两年.然后,我们要么最终开始实施分片解决方案,要么只购买1 TB RAM的服务器,这将让我们保持一段时间.
编辑(2016-01-18):
从那以后,我们将我们的大表放在一个单独的服务器上的自己的数据库中.目前,这个数据库的大小约为1.9 TB,另一个数据库(除"大"数据库外的所有表)的大小为1.1 TB.
当前硬件设置:
- HP ProLiant DL 580
- 4个英特尔(R)至强(R)CPU E7-4830
- 256 GB内存
此设置的性能良好.