解決SQL Server虛擬記憶體不足情況

2021-04-13 04:30:35 字數 1149 閱讀 4230

症狀

在具有 2 gb 或更多 ram 的計算機上,除了 256 mb (sql server 7.0) 或 384 mb (sql server 2000) 虛擬位址空間之外,sql server 在啟動過程中保留剩下的所有虛擬位址空間以供緩衝池使用。另外,為了儲存資料和過程快取,sql server 使用緩衝池記憶體為來自 sql server 程序的大多數小於 8 kb 的其他記憶體請求提供服務。剩下的未保留記憶體準備用於不能從緩衝池得到服務的其他分配。這些分配包括、但不限於以下各項: •sql server 建立的所有執行緒的堆疊和關聯的執行緒環境塊。在 sql server 建立了所有 255 個工作執行緒之後,這大約為 140 mb。

•通過使用 sp_oa 系統儲存過程或擴充套件儲存過程載入的 com 物件。

•來自 sql server 程序的大於 8 kb 的分配,例如較大查詢計畫、網路資料報大小配置選項接近於 8 kb 時傳送和接收緩衝區等情況所需要的分配。要檢視此數字,請查詢在 dbcc memorystatus 中報告的 os reserved 值,該值是作為 8 kb 頁的數目報告的。通常,該值為 5 mb。

•跟蹤緩衝池中每個緩衝區狀態資訊的陣列。該值通常約為 20 mb,除非 sql server 執行時啟用了位址視窗化擴充套件外掛程式 (awe),在這種情況下,該值將會顯著提高。

在擁有大量資料庫的系統上,日誌格式化所需的 64 kb 分配可能會占用所有剩餘的虛擬記憶體。這之後的分配將失敗,導致本文的「症狀」一節中列出的乙個或多個錯誤。

下表根據資料庫的數目和伺服器版本列出 -g 值的一些建議初始值: databasessql server 7.0sql server 2000

250-g134n/a

500-g185n/a

750-g237n/a

1000-g288-g288

1250-g340-g340

1500-g392-g392

此表是使用列出的典型值進行計算的,並且此計算是基於沒有使用鏈結的伺服器活動、sp_oa 或擴充套件儲存過程這一假設的。它還假設您沒有使用 awe 和 sql 事件探查器。出現以上任意一種情況都需要您增加 -g 的值。

如果伺服器上資料庫的數目超過此數目,microsoft 建議您在執行該伺服器之前進行慎重的考慮,因為系統上具有如此數目的資料庫所需的系統開銷將占用緩衝池中的大量虛擬記憶體,從而可能導致系統整體效能下降。

虛擬記憶體應用

虛擬記憶體的重要性體現在下面幾個方面 1 虛擬記憶體可以對映到硬碟,以達到擴充套件記憶體的作用,這樣系統在物理記憶體已經用滿的情況下,就不會因為沒有記憶體可用,而導致系統崩潰。2 虛擬記憶體是以程序空間為定址空間的,一般情況,程序使用者模式下的定址空間 是2g,為了避免記憶體的碎片,可以把2g程序空...

虛擬記憶體(Virtual Memory)

虛擬記憶體 virtual memory 是windows管理所有可用記憶體的方式。對於32位windows系 統,每個程序所用到的虛擬記憶體位址從0到2 32 1,總容量4gb,其中2gb是與作業系統以 及其他所有程序所共享,另外2gb分派給程序獨佔 這就是常說的32位windows中乙個進 程最...

虛擬記憶體使用

虛擬記憶體使用一 簡介windows 提供了3 中進行記憶體管理的方法,包括 虛擬記憶體 一般用來管理大型資料結構,受到硬碟調頁檔案的支援 記憶體對映檔案 常用來管理大型資料流和多程序共享。記憶體堆 最適合用來管理大量的小物件。二 虛擬記憶體的使用 1 我們可以在程序的位址空間中保留乙個區域 pvo...