我的osCommerce安装了一个拥有140k产品且product_description表大小约为 300MB 的网站。页面加载花费了15秒到 20秒,为了测试目的,我将表格削减到100MB,现在它似乎正常工作。
所以我决定使用mySQL分区并制作
PARTITION BY KEY()
PARTITIONS 10;
在这次改变之后我测试了它,但没有改变。
现在我决定将数据库表拆分为3个或更多,名称如下
product_description1
product_description2
product_description3
...
...
我做错了吗?为什么mySQL分区不影响性能或速度?请建议。
答案 0 :(得分:2)
如果您没有可以提供帮助的线索,请不要机械地应用分区。先做通常的事情:索引调整。
从分区中获得的收益完全取决于查询模式。我怀疑你的查询没有从中受益。但他们肯定会受益于正确的指数。
答案 1 :(得分:1)
除非您对分区架构非常有意和聪明,否则您将通过引入分区来伤害性能,而不是帮助它。
在尝试提高性能时,您需要做的第一件事就是分析您的查询。通过这样做,您可能会发现通过一些索引调整和/或一些服务器配置调整,您可以获得所需的性能提升。
300mb不是一张非常大的桌子。但是根据您的查询,它可能会将大量的表分成内存。如果未正确调整MySQL内存参数,则可能会过早地交换磁盘,从而使查询速度变慢。