我正在一个网站上工作,我相信每天大约有70,000次访问,而且它使用了大量使用UNION's
大约45个不同表的查询,这些表通常在每个表中约15k行到约500k行。
我们已经优化了query cache
尽可能好,但是每当其中一个表被改变,并且caching中的数据必须被删除,服务器开始locking,并且mysql的tmp dir
填满和服务器负载天高,要解决这个问题需要做以下工作:
我知道复制可能是最好的想法,但也可能是最昂贵的。 所以想知道如果从http://sphinxsearch.com/使用Sphinx
会帮助很多?
我之前使用它的另一个网站,所以我可以在INNODB表中获得全文search,所以有一点知识如何工作,但不知道它将如何处理这样的事情。
它是否利用它自己的caching方法? 因为不想改变这个,仍然与Sphinx有相同的问题。
编辑:下面是一个截图的解释(缺less第一行,有问题的截图程序)
更新:网站现在每天只能获得30 / k个访问者。
您应该确定并解决数据库问题,每天70k次访问并不多,MySQL有能力处理这些工作量。 您应该下载并使用mysqlreport
或类似的工具来分析和调整MySQL MyISAM和InnoDB缓冲区的使用情况(如果您仍在使用MyISAM,我也推荐切换到InnoDB)。 下一步是在MySQL中启用缓慢的查询日志logging,并使用pt-query-digest
工具和EXPLAIN
MySQL命令每天分析慢速查询日志。 可能你的数据库缺乏适当的索引。