2012-02-04 50 views
0

我必須在每個HTTP請求(頁面訪問次數)上更新MySQL數據庫中的字段。有時我也必須爲靜態文件做這件事。在重負載環境中,這可能會阻止響應,因爲MySQL數據庫一次可以執行單個更新(每個記錄)進程。Rails:更新每個請求的用戶字段(如何優化)

我在想

  • 追加到一個文件,並解析它在後臺每隔X分鐘
  • 寫日誌記錄到MySQL數據庫(特表),並做了 後臺處理

你會如何優化?

+0

您有一個計數器覆蓋所有頁面瀏覽量嗎? – 2012-02-04 11:02:01

+0

@FrederickCheung不,不,我只是把它作爲一個例子。其實我會記錄一些文件的帶寬(每個記錄的用戶)。 – xpepermint 2012-02-04 11:03:34

回答

2

我不相信你說的關於MySQL的內容 - 可以同時發生多個更新。

如果你確實達到了mysql的併發限制,你是否考慮過使用不同的數據存儲來獲取這些信息?例如MongoDB是很好地適應這些類型的更新插入操作的,因爲它具有廣泛的「發射後不管」之稱的modifiers

例如,你可以這樣做

db.pagecounters.update({name: 'x'}, {$inc: {count: 1}}, true) 

此更新操作會找到名稱爲x的頁面計數器對象,並且遞增計數爲1(如果計數存在)或將計數設置爲1.如果沒有此類頁面計數器,則會創建一個

+0

嗡嗡....「火,忘了」......聽起來不錯。將檢查。 – xpepermint 2012-02-04 11:10:54

+0

鏈接到mongo文檔的相關位 – 2012-02-04 11:18:05

+0

這太棒了!默認情況下,Mongo Ruby驅動程序是'火再忘了'。 – xpepermint 2012-02-04 14:04:44

相關問題