簡體   English   中英

Rails 印象派進行昂貴的查詢

[英]Rails Impressionist making expensive queries

我正在使用 charlotte-ruby/impressionist 來跟蹤我的 rails 應用程序中的印象。

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

我今天遇到了一些數據庫排隊問題,在檢查我在 Heroku Postgres 中的昂貴查詢時發現了以下問題:在此處輸入圖片說明

我立即從我的控制器/視圖中刪除了印象派(在 14:30),您可以看到它如何影響性能:在此處輸入圖片說明

有沒有人遇到過印象派寶石的類似問題? 從數據庫的角度來看,為什么它如此昂貴的任何想法?

編輯:

以下是添加的索引:

  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

@Ken Hampson - 感謝您的推薦。 查找長時間運行的 SELECT 查詢確定了另一個需要的索引。 一旦添加,POOF,一切都更好。 很奇怪,這個問題在網站上線幾個月后才出現。 印象一定達到了折斷駱駝背的尺寸。 感謝幫助!

對於因數據庫查詢(在 Heroku 上)而遇到類似性能下降問題的任何人,轉到https://postgres.heroku.com/databases/your-database-name並查看“昂貴的查詢”表是一個很好的選擇找出您可能錯過索引的位置的方法。

大型項目(數千/數百萬用戶)的最佳解決方案是出氣筒 gem ,通過文檔進行集成: punching_bag

當每個請求都會創建一個新記錄時,就會出現主要問題,這會給數據庫帶來巨大的負載。 寶石印象派在這里失敗了。 沙袋也能創造記錄,但它有一個救援任務:

每月/每周為這個 rake 任務安排一個 cron 作業,以減少(分組記錄)記錄數量,而不會影響頁面瀏覽次數,這可以通過簡單的 @post.hits 找到。 這是耙子任務:耙子punching_bag:combine[by_hour_after,by_day_after,by_month_after,by_year_after]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM