我有一个客户设计的系统,该表原本不应该在几年内超过10演出(可能是1000万行)。好吧,他们输入了比他们想象的更多的信息,并且在一个月内,该表现在达到208演出(9亿行)。
我对MySQL的经验很少,而且我对Microsoft SQL的经验也很丰富。 MySQL中是否有任何允许客户端使数据库跨越多个文件的内容,因此运行的查询不必使用整个表和索引?桌子上有一个可以轻松拆分的字段,但我不知道该怎么做。
我要解决的主要问题是从该表中检索查询。插入并不是什么大问题,因为它都是由后端服务完成的。我有一个测试系统,表格约为2演出(600万行),我的查询不到一秒钟。在生产系统上运行相同的查询时,需要20秒。我觉得查询运行良好,只是导致问题的表的大小。此表上有一个专门为此查询创建的索引,并使用EXPLAIN,它正在使用它。
如果您有任何其他建议/问题,请随时提出。
答案 0 :(得分:1)
使用partitioning,尤其是设置data_directory和index_directory的create table部分。
使用这些选项,您可以根据需要将分区放在不同的驱动器上。但通常情况下,使用可以在每个查询上使用的密钥进行分区就足够了,通常是时间。
答案 1 :(得分:1)
除了已经提到的分区之外,您可能还需要运行tuning-primer脚本以确保您的mysql配置是最佳的。