我有許多全局應用程序設置存儲在數據庫中的一個名爲「settings」的表中。它有三列:id,key,value。在DB中高效地存儲/檢索Rails應用程序的全局設置
現在我們假設我有一個產品清單列出了30種產品。顯示這些產品中的每一個需要從設置表中檢索特定設置「交換率」。我做到這一點的方式是嚮應用幫助程序添加了一個函數「exchange_rate」,該函數用鍵「exchange rate」查找設置行並檢索值。
現在你可能會問什麼?嗯,真的沒什麼,它工作得很好,但是當我按照開發服務器日誌,我注意到每個請求有這些條目的30:
CACHE(0.0ms)選擇settings
* FROM settings
WHERE(settings
key
='。 EXCHANGE_RATE')LIMIT 1
CACHE(0.0ms)選擇settings
。* FROM settings
WHERE(settings
。key
= 'EXCHANGE_RATE')LIMIT 1
它看起來非常醜陋和雜波我的日誌。原因很明顯:數據庫條目被檢索了30次。它似乎沒有任何數據庫負載,因爲它說CACHE,所以不應該有任何性能問題(或者有 - 我不知道)。
我的問題是:它是「更乾淨」,更合理的檢索這個全局變量(匯率)一次,然後將它保存在某處(在哪裏?),這樣我就不會看到這些看起來多餘(雖然緩存)數據庫請求?
這是一個很好的答案,謝謝。你認爲有一種簡單的推廣方法,所有的設置都是這樣加載的,而不必爲每個設置單獨的函數? – 2011-02-15 11:14:18