2012-11-14 53 views
3

背景標杆FULLTEXT性能 - 如何

我需要實現一個MySQL服務器數據庫上FULLTEXT搜索(在10K-200K記錄的大小範圍)。

截至目前,數據庫搜索是基於幼稚的做法(LIKE查詢),這顯然是低效率的,更何況不可配置等

兩個備選方案被認爲:

  1. 啓用MySQL「 (需要添加一個或多個MyISAM表 - 整個數據庫現在爲InnoDB);

  2. 安裝Sphinx

(我們使用PHP 5.2和升級是不是一種選擇,所以InnoDB的FULLTEXT是毫無疑問的在這裏。)

問題

有性能方面的考慮。無論如何實現FULLTEXT都會佔用更多的磁盤空間,並且給CPU帶來更多的負擔是可以理解的。

目標是找出多少。這兩種解決方案都要以對方爲基準(當然還有當然的現狀)。我需要設置並執行這些測試。

我會去了解它的方式是:

  1. 填寫了真實數據的數據庫(說10萬行);

  2. 測量構建索引所需的時間;

  3. 通過插入/更新數千行來模擬重新索引的需求 - 再次分析所需的時間以及CPU和RAM的使用情況;

  4. 在布爾和自然語言模式下使用一組短短詞組測試查詢速度。

相當簡單,到目前爲止,但任何意見,將不勝感激,因爲我更多的桌面/客戶端應用開發的,我走出我的安樂窩。

問題

  1. 我缺少什麼?這個測試場景是否可能產生有意義的結果?

  2. 如果不是cron腳本,監控服務器CPU和RAM使用情況的正確方法是什麼?

我知道這是一個開放的問題,我希望它不會被關閉。

+0

即使對於200k記錄,獅身人面像和myisam搜索之間沒有區別。但對我來說,myisam Percona服務器更快,全文+索引 –

+0

LIKE +索引就足夠了,如果你不使用兩邊搜索(%ddd%) –

+0

@DenisErmolin - 我們這樣做。另外,我們真的是更好的準確性(「你是否意味着...」的功能等) –

回答

3

這種情況看起來不錯,我只是建議在sphinx中實現delta索引(只索引自上次索引以來的更改)。

在監控上,您可以設置仙人掌或慕尼黑工具,但如果您打算僅將它們用於此測試,那麼dstat可能就足夠了。