2009-06-01 58 views
1

在php/mysql系統中,我們有一些配置值(大約200) - 這些大多數是布爾值或整數,並存儲諸如每頁結果數和頁面是否2或3列。這些都存儲在一個mysql表中,我們使用一個函數按照請求返回這些值,在某些加載的頁面上可能會有大約100個請求到這個配置表。隨着使用此係統的站點數量的增加,這意味着每秒可能會有數千個請求來檢索這些值。問題是這種方法是否有意義,或者是否最好每頁執行一次請求,並將所有配置存儲在一個數組中,並且每次都從這裏進行檢索。在數組中存儲或使用多個db查詢

回答

1

使用緩存,如memcache,APC或任何其他。加載設置一次,緩存它,並通過您的會話與單身人士對象分享。

即使保存了查詢緩存,也會浪費時間和資源來反覆查詢數據庫。而是在任何修改值的請求上,使內存中的緩存無效,以便下次有人從中請求值時立即重新加載該緩存。

+0

絕對聽起來像是最好的計劃,謝謝 – robjmills 2009-06-01 13:48:24

1

如果啓用MySQL查詢緩存,那麼選擇您的值的查詢將緩存在內存中,除非基礎表中的查詢或數據發生更改,否則MySQL將從內存中立即給出答案。

這對於性能和可管理性都​​非常出色。

可以在會話之間重複使用查詢結果:這意味着,如果您有1000會話,則不需要保留1000數據副本。

+0

我們已啓用查詢緩存,並且此表格中的數據相當靜態,我認爲這可以很好地保存緩存 – robjmills 2009-06-01 11:16:41

0

您可能想要考慮使用memcache。我認爲這會比多個數據庫查詢(甚至是查詢緩存)更快,並且您不需要數據庫連接即可獲取它們。

您可能想要考慮將它們從平面文件加載到內存中,這可以讓您有機會版本控制您的配置值。

0

我會明確地建議爲此memcache。我們有一個類似的設置,它已經在該服務器上顯着地降低了資源使用率。

相關問題