2010-12-18 166 views
0

我應該怎麼做才能加快獅身人面像索引(使用MySQL)? 我應該使用其他數據庫,noSQL數據庫嗎?獅身人面像重建索引需要幾個小時

請注意,增量索引速度很快,只有完全reindeinx過程很慢。 請詳細解釋。謝謝!

更新: 我重新索引超過10萬項,我的思想,獅身人面像索引定義是這樣的

define_index do 
    indexes [text, user(:nickname), user(:full_name)] 
    has rewrites(:id), :as => :rewrite_id 
    has rewrites(:user_id), :as => :rewrite_user_id 
    has [rewrites(:user_id), user_id], :as => :user_id_or_rewrites_user_id 
    has comments(:user_id), :as => :comments_user_id 
    has simbols(:id), :as => :simbol_ids 
    has followings(:follower_id), :as => :follower_id 
    has follows(:followable_id), :as => :followable_id 
    has created_at, :sortable => true 
    has rewrites_count, :sortable => true 
    has relevance, :sortable => true 
    has user_id 
    set_property :delta => :datetime 
    end 
+0

請提供一些細節。您索引了多少項目?在哪裏花費大部分時間索引?你有日誌輸出嗎?我已經爲成千上萬篇帶有多個索引字段的文章編制了索引,通常需要幾分鐘的時間。 – Todd 2010-12-18 22:39:40

+0

@Todd:我剛剛更新了我的問題。 – xpepermint 2010-12-18 22:48:36

+0

您是否試圖確定大部分加工過程在哪裏進行?如果它在mysql中,可能需要更好地索引表。也許嘗試手動運行獅身人面像正在使用的查詢,看看它是如何做的。我傾向於說這可以加快。我只是在10k +記錄上重新獲得了一個完整的索引,並且耗時<1分鐘。 – Todd 2010-12-18 23:15:42

回答

1

構建一個完整的索引是緩慢的。有多慢?

構建增量索引很快。

這聽起來很正常,根據我的經驗。

noSQL數據庫(最後聽說@Rails 2.3.5)很難與Rails集成。沒有SQL速度取決於你的數據集和關係。

沒有更多的信息,這聽起來很正常。

== ==編輯

確保您有

created_at 
rewrites_count 
relevance 

SQL指標除了你的主鍵自然。

+0

Shur ...我知道這很正常,但是做什麼應該是更好的方法? – xpepermint 2010-12-18 22:49:30

+0

是的......我的數據庫列有索引。 – xpepermint 2010-12-18 22:58:22

+0

@xpepermint你知道這個過程是IO還是CPU綁定?如果我正確記得它的多線程並且IO綁定了我的應用程序。如果IO綁定,則將硬件放在它上面。 – EnabrenTane 2010-12-18 23:00:47

0

如何使用實時指數(帶調整合適的內存限制)

+0

哼......你能舉個例子嗎? – xpepermint 2010-12-22 10:04:31

+0

http://sphinxsearch.com/docs/current。html#rt-indexes – dmytrivv 2010-12-22 13:32:39

+0

實時索引(或簡稱爲RT索引)是一個新的後端,允許您即時插入,更新或刪除文檔(行)。 – dmytrivv 2010-12-22 21:46:55

1

當thinking_sphinx工作總是看它產生的真正的獅身人面像配置文件中的SQL。針對運行的所有查詢運行查詢分析器。我發現你也可以操縱查詢。

也爲一對多的關係中,你可能需要補充一點:

:源=>:ranged_query

這將導致獅身人面像使用一個單獨的查詢,收集孩子們,而不是外部聯接。在很多情況下,速度要快得多。