在我的一個應用程序中,我有一個用於參考數據的1GB數據庫表。它擁有大量的讀取數據,但沒有寫入過。我想知道是否有任何方法可以將數據加載到RAM中,以便不必從磁盤訪問數據?將只讀數據庫表加載到內存中
我正在使用SQL Server 2005
在我的一個應用程序中,我有一個用於參考數據的1GB數據庫表。它擁有大量的讀取數據,但沒有寫入過。我想知道是否有任何方法可以將數據加載到RAM中,以便不必從磁盤訪問數據?將只讀數據庫表加載到內存中
我正在使用SQL Server 2005
如果你有足夠的RAM,SQL將突出抓好確定所要加載到RAM中,哪些尋求在磁盤上。
這個問題被問了很多,它讓我想起人們試圖手動設置他們的進程將運行在哪個「核心」 - 讓操作系統(或在這種情況下,數據庫)執行它的設計。
如果您想驗證SQL實際上是在讀你的查找數據進行緩存,那麼你就可以啓動負載測試,並使用Sysinternals的FileMon,Process Explorer和Process Monitor驗證1GB的表沒有被讀取。出於這個原因,我們有時會將我們的「查找」數據放到一個單獨的文件組中,以便在磁盤上訪問時很容易監控。
希望這會有所幫助。
您將要看看memcached。這就是很多巨大的(和規模很大的)網站用來處理像這樣的問題。如果您有幾臺備用服務器,您可以輕鬆設置它們以將大部分數據保存在內存中。
http://en.wikipedia.org/wiki/Memcached
DBCC PINTABLE將明確地將一個表固定在覈心中,如果你想確保它仍然被緩存。
只是爲了澄清問題的SQL2005和高達:
此功能中引入了在SQL Server 6.5版 性能。 DBCC PINTABLE具有高度不需要的 副作用。這些包括可能損壞緩衝池的 。 DBCC PINTABLE不是必需的,並已刪除 以防止其他 問題。該命令 的語法仍然有效,但不會影響 服務器。