2014-09-02 72 views
2

我使用charlotte-ruby /印象派追蹤我的Rails應用程序中的展示次數。Rails印象派製作昂貴的查詢

我有一個非常簡單的實現,類似於快速入門指南中顯示的內容。有效: - 控制器:印象派動作:[:秀:指數] - 景觀:@ post.impressionist_count - 型號:is_impressionable

我今天遇到了一些DB排隊問題,發現退房時關注我Heroku的Postgres的內昂貴的查詢: enter image description here

我立即刪除印象派從我的控制器/次(14時30分),你可以看到它是如何影響性能: enter image description here

有沒有人遇到類似的問題同印象派的寶石?從數據庫的角度來看,爲什麼它如此昂貴?

編輯:

這裏有添加的指標:

add_index "impressions", ["controller_name", "action_name", "ip_address"], name: "controlleraction_ip_index", using: :btree 
    add_index "impressions", ["controller_name", "action_name", "request_hash"], name: "controlleraction_request_index", using: :btree 
    add_index "impressions", ["controller_name", "action_name", "session_hash"], name: "controlleraction_session_index", using: :btree 
    add_index "impressions", ["impressionable_type", "impressionable_id", "ip_address"], name: "poly_ip_index", using: :btree 
    add_index "impressions", ["impressionable_type", "impressionable_id", "request_hash"], name: "poly_request_index", using: :btree 
    add_index "impressions", ["impressionable_type", "impressionable_id", "session_hash"], name: "poly_session_index", using: :btree 
    add_index "impressions", ["impressionable_type", "message", "impressionable_id"], name: "impressionable_type_message_index", using: :btree 
    add_index "impressions", ["user_id"], name: "index_impressions_on_user_id", using: :btree 
+1

我在安裝'印象主義'寶石時注意到的事情是它在數據庫中創建的大量索引。我擺脫了他們,因爲我沒有看到你很少使用的表格中索引的需要。也許這就是你造成這種情況的原因。 – Iceman 2014-09-02 22:14:34

+0

很難從發佈的數據中得出確切的結論(除了您認爲印象主義*寶石可能是高級別的原因之外)......數據庫中的「印象」表中有任何索引, ve符合那些'where'條款的條件?那裏有一堆「選擇」聚集在一個給定的頁面加載? – khampson 2014-09-03 02:12:57

+0

增加了問題的索引。不太熟悉這一點。任何看起來不正常的東西? – dmt2989 2014-09-03 02:35:28

回答

1

@Ken漢普森 - 感謝的建議。尋找長時間運行的SELECT查詢確定了另一個需要的索引。一旦添加,POOF,一切都會更好。奇怪的是,這個問題剛剛出現後,網站生活了幾個月。印象必須達到打破駱駝背部的大小。感謝幫助!

對於任何由於數據庫查詢(在Heroku上)而導致性能下降而出現類似問題的人,轉到https://postgres.heroku.com/databases/your-database-name並查看「昂貴的查詢」表格可以很好地找出您可能錯過索引的位置。

+0

當然,沒問題。 – khampson 2014-09-05 02:07:51

+0

真棒找到這個。昨天有一個非常類似的經歷......幾個月和BOOM的穩定響應時間,20000毫秒+ – Kathan 2016-03-27 06:17:50