2008-09-04 65 views
1

在我的一個應用程序中,我有一個用於參考數據的1GB數據庫表。它擁有大量的讀取數據,但沒有寫入過。我想知道是否有任何方法可以將數據加載到RAM中,以便不必從磁盤訪問數據?將只讀數據庫表加載到內存中

我正在使用SQL Server 2005

回答

5

如果你有足夠的RAM,SQL將突出抓好確定所要加載到RAM中,哪些尋求在磁盤上。

這個問題被問了很多,它讓我想起人們試圖手動設置他們的進程將運行在哪個「核心」 - 讓操作系統(或在這種情況下,數據庫)執行它的設計。

如果您想驗證SQL實際上是在讀你的查找數據進行緩存,那麼你就可以啓動負載測試,並使用Sysinternals的FileMonProcess ExplorerProcess Monitor驗證1GB的表沒有被讀取。出於這個原因,我們有時會將我們的「查找」數據放到一個單獨的文件組中,以便在磁盤上訪問時很容易監控。

希望這會有所幫助。

1

只是爲了澄清問題的SQL2005和高達:

此功能中引入了在SQL Server 6.5版 性能。 DBCC PINTABLE具有高度不需要的 副作用。這些包括可能損壞緩衝池的 。 DBCC PINTABLE不是必需的,並已刪除 以防止其他 問題。該命令 的語法仍然有效,但不會影響 服務器。