Mysql 20.000用户 - 10.000.000+记录 - 最佳实践

时间:2011-11-14 09:08:32

标签: mysql

我正在开发一个数据库,可以在短时间内增加到每天5.000+以上的用户。记录数可能超过10.000.000。

对于我的其他数据库应用程序,我使用多个表来加载。像这样的东西

if($ID <= '200'){ $useTable = "0"; }
etc etc

关于上述代码的问题(Solve logics / math in php code -> what's the best approach) 对此解决方案提出了一些疑问。

我选择此设置的原因是这些假设: 1.搜索具有100.000条记录的表格明显快于搜索10.000.000条记录 2.在一张桌子上同时工作的5.000个用户给db带来了更大的压力,然后在多个表上工作

我很想得到你的意见和/或更好的解决方案。

3 个答案:

答案 0 :(得分:3)

你使用什么MySQL版本?如果你想像使用自定义php代码一样均匀地分配负载,例如有partitioning

答案 1 :(得分:1)

我建议使用分片(分区,如@FractalizeR所说)作为原始问题的解决方案。这仍然是解决方案。

它类似于您想到的解决方案,除了通过数据库本身处理逻辑,并且查询更简单。您只需正常继续,让数据库处理要读取的分区的决定。

答案 2 :(得分:0)

如果您没有共享数据,因此数据可能在区域中分开(例如$ ID%10),这是一个很好的做法。它将使索引搜索更快一些(真正无关紧要的优化)。我甚至没有提到表锁 - 希望你不要使用myISAM。

关于这个“在一个表上同时工作的5.000个用户给db带来了更大的压力,然后处理多个表” - 如果使用行级锁定引擎(如InnoDB),则不是这样。

据我了解,您的非共享数据类似于用户会话。为什么不在这种情况下使用memcache而不是mysql?

关于FractalizeR的建议的一点注意事项:我没有重新考虑在mysql中使用分区。它的工作速度非常慢,而且还有漏洞。如果您有兴趣,我可以发布更多关于它的信息。