Sphinx 是否是解決伺服器因大量 MySQL 讀取而陷入困境的良好解決方案?

Sphinx 是否是解決伺服器因大量 MySQL 讀取而陷入困境的良好解決方案?

我正在開發一個網站,我相信每天的訪問量約為 70k,並且它使用了大量查詢,這些查詢使用了UNION's大約45 個不同的表,這些表的範圍通常為每個表中約15k 行到約500k行。

我們已經盡可能地優化了query cache,但是每當其中一個表發生更改並且必須刪除快取中的資料時,伺服器就會開始鎖定,並且 mysqltmp dir會填滿,並且伺服器負載會變得非常高,並且必須執行以下操作解決該問題的方法:

  1. 停止mysql(負載恢復正常)
  2. 修復資料庫表
  3. 從 mysql 清除緩存
  4. 刷新記憶體快取
  5. 再次修復資料庫表
  6. 重啟mysql

我知道複製可能是最好的想法,但也可能是最昂貴的。所以想知道是否Sphinx利用http://sphinxsearch.com/會有很多幫助嗎?

我之前在另一個網站上使用過它,這樣我就可以在 INNODB 表上進行全文搜索,因此對它的工作原理有一點了解,但不確定它如何處理這樣的事情。

它使用自己的快取方法嗎?因為不想改變這一點,但仍然會遇到與 Sphinx 相同的問題。

編輯:下面是螢幕截圖EXPLAIN(缺少第一行,螢幕截圖程式有問題)

更新:網站現在每天只有 30/k 訪客。

在此輸入影像描述

答案1

你應該識別並解決資料庫問題,每天 70k 的訪問量並不算多,MySQL 能夠處理這麼多的工作。您應該下載並使用mysqlreport類似的工具來分析和調整 MySQL MyISAM 和 InnoDB 緩衝區的使用情況(如果您仍在使用 MyISAM,我還建議切換到 InnoDB)。下一步是在 MySQL 中啟用慢查詢日誌記錄,並使用pt-query-digest工具和EXPLAINMySQL 命令每天分析慢查詢日誌。可能您的資料庫缺少適當的索引。

相關內容