Database-Performance

將產品數據儲存在會話變數中或每次都訪問數據庫?

  • January 7, 2011

我的數據庫儲存了大量有關產品的資訊(年份、名稱、發布日期、數量等)。我目前載入所有產品一次並將它們儲存在會話變數中 - 現在只有 8 個產品,但列表會隨著時間的推移而增長。我這樣做的原因是(也許是愚蠢的)每次訪問產品頁面時保存硬碟讀取。通過在會話中儲存這些資訊,我是不是在打自己的腳?

是的,你可能是在踢自己的腳。如果每個使用者會話都儲存了所有產品資訊,那麼一旦您擁有大量使用者和大量產品,您可能會耗盡記憶體。

我建議使用 memcached 之類的東西來記憶體針對產品表的查詢,這樣您就不會太用力地敲擊磁碟,但也不會耗盡記憶體。

但這實際上取決於您期望的規模——如果您只有 50kB 的產品數據和 500 個同時使用者會話,那麼您只會吃掉 25MB,而且您可能會僥倖逃脫. 如果您期望 50MB 的產品數據和 50,000 個使用者會話,那麼您將使用 2.5TB 的 RAM,而您可能不會擁有。

引用自:https://serverfault.com/questions/219900