Sphinx 是否能成为解决服务器因大量 MySQL 读取而陷入困境的好办法?

Sphinx 是否能成为解决服务器因大量 MySQL 读取而陷入困境的好办法?

我正在工作的一个网站,我相信每天大约有 70,000 人次访问,它使用了很多查询,这些查询使用了UNION's大约 45 个不同的表,这些表通常每个表包含大约 15,000 行到大约 500,000 行。

我们已经query cache尽可能地进行了优化,但是每当其中一个表发生更改并且必须删除缓存中的数据时,服务器就会开始锁定,mysqltmp dir就会填满,服务器负载就会变得很高,必须执行以下操作来修复该问题:

  1. 停止mysql(负载恢复正常)
  2. 修复数据库表
  3. 清除 mysql 缓存
  4. 刷新内存缓存
  5. 再次修复数据库表
  6. 重启 mysql

我知道复制可能是最好的主意,但也可能是最昂贵的。所以想知道是否可以Sphinx利用http://sphinxsearch.com/会有很大帮助吗?

我之前在另一个网站上使用过它,这样我就可以在 INNODB 表上进行全文搜索,因此对它的工作原理有一点了解,但不确定它如何处理这样的事情。

它是否利用了自己的缓存方法?我不想改变这一点,但仍然遇到与 Sphinx 相同的问题。

编辑:EXPLAIN下面是(缺少第一行,截图程序有问题)的截图

更新:网站目前每天仅有 30/k 位访客。

在此处输入图片描述

答案1

您应该识别并解决数据库问题,每天 7 万次访问并不算多,MySQL 能够处理这么多的工作。您应该下载并使用mysqlreport类似工具来分析和调整 MySQL MyISAM 和 InnoDB 缓冲区的使用情况(如果您仍在使用 MyISAM,我还建议您切换到 InnoDB)。下一步是启用 MySQL 中的慢查询日志记录,并使用pt-query-digest工具和EXPLAINMySQL 命令每天分析慢查询日志。您的数据库可能缺少适当的索引。

相关内容