第一種狀況: 動態改變它的內存需求。 默認狀況下,SQL Server 會依據可得到的系統資源動態改變它的內存需求。若是 SQL Server 須要更多的內存,它會要求操做系統肯定是否有空閒的物理內存可用,並使用可用的內存。若 SQL Server 再也不須要當前分配給它的內存,它就將內存釋放給操做系統。當 SQL Server 動態使用內存時,它要求系統按期地檢測可用的物理內存數量。SQL Server 根據服務器活動增大或收縮高速緩衝存儲器,以使可用物理內存保持在 4 MB 到 10 MB 之間。這就避免了系統進行換頁操做。 [也就是說,這種狀況下SQL SERVER 自己不會使物理可用內存小於4M,若是比較長的時間內都小於4M的話,則要看一下是否是該服務器上其它應用程序有問題] 第二種狀況:限制使用內存 使用 set working set size 爲sql server保留等於服務器內存設置的物理內存空間。即便是sql server 進程此時是空閒的,系統也不會將 SQL Server 頁交換出去。 使用min server memory 保證sql server 使用的最小內存。SQL Server 啓動時不當即分配 min server memory 中所指定的內存量。可是,當內存使用因爲客戶端負荷而達到該值後,SQL Server 將沒法從已分配的緩衝池中釋放內存。 使用max server memory 則防止 SQL Server 使用多於指定數量的內存,這樣剩餘的可用內存能夠快速運行其它應用程序。SQL Server 啓動時不當即分配 max server memory 中所指定的內存。內存使用隨 SQL Server 的須要而增加,直到達到 max server memory 中所指定的值。SQL Server 沒法超過該內存使用值,除非增長 max server memory 值。 第一種狀況比較適用於服務器專作sql server服務器的狀況,第二種狀況適用於爲在同一臺計算機上運行的其它應用程序保留必定的內存以便於快速響應。(另:若是想動態分配sql server 的內存,則不要設置set working set size 選項,使用默認值便可。至於這些參數如何設置參見另外的文檔) 監視 SQL Server 所使用的內存和計數器有助於肯定: 是否因爲缺乏可用物理內存存儲高速緩存中常常訪問的數據而致使瓶頸存在。若是是這樣,SQL Server 必須從磁盤檢索數據。 是否可經過添加更多內存或使更多內存可用於數據高速緩存或 SQL Server 內部結構來提升查詢性能。 SQL Server 須要從磁盤讀取數據的頻率。與其它操做相比,例如內存訪問,物理 I/O 會耗費大量時間。儘量減小物理 I/O 能夠提升查詢性能。 對sql server服務器內存的監視: Memory:Available Bytes 計數器表示當前進程可以使用的物理內存字節數。 若是小於4M或更小,說明計算機上總的內存可能不足,或某個程序沒有釋放內存 ● Memory: Page Faults / sec 每秒軟性頁面失效的數目(包括有些能夠直接在內存中知足而有些須要從硬盤讀取)較page/sec只代表數據不能在內存指定工做集中當即使用。 若是該值偶爾走高,代表當時有線程競爭內存。若是持續很高,則內 存多是瓶頸。 Memory:Pages/sec 計數器表示因爲缺頁處理而從磁盤取回的頁數,或因爲缺頁處理而寫入磁盤以釋放工做集空間的頁數。 ● Page Reads/sec 每秒發出的物理數據庫頁讀取數。這一統計信息顯示的是在全部數據庫間的物理頁讀取總數。因爲物理 I/O 的開銷大,能夠經過使用更大的數據高速緩存、智能索引、更高效的查詢或者改變數據庫設計等方法,使開銷減到最小。 ● Page Writes/sec 所發出的物理數據庫頁寫入的數目。 監視 SQL Server 正在使用的內存量: Process:Working Set 計數器表示的是一個進程所佔用的內存數量。 若這一數值持續低於 SQL Server 配置使用的內存數量(由"最小服務器內存"和"最大服務器內存"服務器選項設置,( min server memory 的默認設置爲 0,max server memory 的默認設置爲 2147483647。),則表示 SQL Server 所配置的內存比它所須要的多。不然,用"設置工做集大小"服務器選項修改工做集大小。 [在設置了sql server 使用的最小 和 最大內存後,查看此參數比較有意義。若是沒有設置sql server 內存使用範圍,則該值能夠與系統總的內存比較,設置分配給sql server 的最大最小內存分配的是物理內存+虛擬內存的一部分] ● SQL Server:Buffer Manager:Buffer Cache Hit Ratio 數據請求能夠從數據緩衝區中得到所需數據的成功率 計數器值依應用程序而定,但比率最好爲 90% 或更高。增長內存直到這一數值持續高於 90%,表示 90% 以上的數據請求能夠從數據緩衝區中得到所需數據。 ● SQL Server:Buffer Manager: Total Pages 緩衝區池中頁的數目(包括數據庫、可用頁和被盜用頁) 若 Total Server Memory (KB) 計數器值與計算機的物理內存大小相比一直很高,可能表示須要更多的內存 結論: 對sql server 服務器內存的監視,能夠看出該服務器總體的內存的佔用狀況 對 sql server 使用內存的監視, 能夠看出是不是sql server 使用了大多數內存 根據監視的結果肯定是不是內存不夠。 其它: 內存相關參數調整(見後面) SQL Server 對象內存使用狀況說明(見後面) 疑問: 使用 set working set size =1 後,系統是在sql server 啓動時就分配給它要求的內存 仍是 開始不分配這麼多,而是等到用了這麼多以後不釋放就好了? SQL Server 對象內存使用狀況說明 下表列出 Microsoft® SQL Server™ 中不一樣對象的內存使用量。下表中的信息不適用於 Microsoft® SQL Server 2000™ Windows® CE 版。 對象大小 對象 SQL Server 7.0 SQL Server 2000 鎖 96 字節 每一個全部者 64 字節外加 32 字節。 開放式數據庫 2.880 字節 每一個文件 3924 字節外加 1640 字節,每一個文件組 336 字節。 開放式對象1 276 字節 每一個對象上打開的索引 256 字節外加 1724 字節2。 用戶聯接 12 KB +(3 * 網絡數據包大小)3。 12 KB +(3 * 網絡數據包大小)3。 3 開放式對象包括全部的表、視圖、存儲過程、擴展存儲過程、觸發器、規則、默認值及約束。 2 在表或視圖上能夠打開索引。 3 網絡數據包大小是表格格式數據方案 (TDS) 數據包的大小,該數據包用於應用程序和關係數據庫引擎之間的通信。默認的數據包大小爲 4 KB,由 network packet size 配置選項控制。 內存相關: 服務器虛擬內存的配置 頁面文件和物理內存或RAM構成虛禮內存 虛擬內存設置方法: 啓動"控制面板"的"系統"選項,而後選擇"虛擬內存"按鈕來建立一個附加的頁面文件或增長當前頁面文件的大小。 虛擬內存不足: 當服務器上運行的應用程序請求的內存超過服務器上可用的內存時,Microsoft® Windows® 打開"服務器進程 — 虛擬內存用完"對話框,其文本以下所示: 系統的虛擬內存已經不足。請關閉一些應用程序。能夠啓動"控制面板"的"系統"選項,而後選擇"虛擬內存"按鈕來建立一個附加的頁面文件或增長當前頁面文件的大小。 通常狀況下,將虛擬內存大小設置爲計算機中安裝的物理內存的 1.5 倍 若是另外安裝了全文檢索功能,並打算運行 Microsoft 搜索服務以便執行全文索引和查詢,可考慮: 將虛擬內存大小配置爲至少是計算機中安裝的物理內存的 3 倍。 ● 將 SQL Server max server memory 服務器配置選項配置爲物理內存的 1.5 倍(虛擬內存大小設置的一半)。 如考慮其它服務須要的虛擬內存,則配置 SQL Server max server memory 選項,使得留有足夠的虛擬內存知足全文檢索內存需求。所有虛擬內存 -(SQL Server 最大虛擬內存 + 其它服務須要的虛擬內存)>= 1.5 倍物理內存。 Sql server 使用的內存參數的配置: 手工配置給 SQL Server 多於物理內存數量的虛擬內存會致使性能較低。默認狀況下,SQL Server 可以可用系統資源動態改變它的內存需求。min server memory 的默認設置爲 0,max server memory 的默認設置爲 2147483647。能夠爲 max server memory 指定的最小內存量爲 4 MB。 做用:若是在運行 SQL Server 實例的計算機上頻繁啓動或中止其它應用程序,啓動這些應用程序所需的時間可能會因 SQL Server 實例分配和釋放內存而延長。另外,若是 SQL Server 是幾個在一臺計算機上運行的服務器應用程序中的一個,系統管理員可能須要控制分配給 SQL Server 的內存量。在這些狀況下,可使用 min server memory 和 max server memory 選項控制 SQL Server 可使用的內存量。 對SQL Sserver 使用內存的配置主要是對如下三個參數進行配置: min server memory 保證了 SQL Server 實例使用的最小內存量。 max server memory 則可防止 SQL Server 使用多於指定數量的內存,這樣剩餘的可用內存能夠快速運行其它應用程序。 set working set size 爲 SQL Server 保留等於服務器內存設置的物理內存空間。 手工設置 SQL Server 內存選項有兩種主要方法: 第一種方法,設置 min server memory 和 max server memory 爲同一數值。該數值與分配給 SQL Server 的固定內存量相對應。 ● 第二種方法,把 min server memory 和 max server memory 數量設置到一個範圍段內。這種方法在系統或數據庫管理員但願配置 SQL Server 實例,使其適應在同一臺計算機上運行的其它應用程序的內存需求時頗有用。 若是隻設置了min server memory 和 max server memory ,sql server 使用的內存值在最小和最大值之間變更(若是sql server 使用的值超過過最小值的話) 若是設置set working set size =1,必須先將min server memory 和 max server memory的值設成同一個值,這個值就是爲sql server 保留的物理內存空間。即便當 SQL Server 空閒,另外一個進程可使用 SQL Server 頁時,系統也不會將 SQL Server 頁交換出去。 參數的設置方法: 1. 在查詢分析器中運行 [要先運行下面的語句,不然內存頁面打不開] use master exec sp_configure 'show advanced option','1' 2. 在企業管理器中配置,步驟: 打開Sql Server 屬性配置,選擇內存頁面,而後在裏面配置就好了。 (不過這裏用圖形界面配置內存的時候好像不能超過物理內存的大小,能夠用命令來分配大於物理內存的內存空間,下面有簡單的介紹。 ) 對上圖的說明: 動態配置 SQL Server 內存 指定在更改服務器屬性以後當即配置 Microsoft® SQL Server™ 內存。 使用固定的內存大小 爲 SQL Server 指定固定的內存大小。 爲 SQL Server 保留物理內存 爲 SQL Server 保留與內存設置相等的物理內存空間。這意味着 Microsoft Windows NT® 4.0 或 Windows® 2000 不會將 SQL Server 頁交換出去,即便當 SQL Server 閒置時能夠更容易地使用這些頁。 最小查詢內存 設置能夠分配給每一個用戶執行查詢的最小內存大小。默認爲 1024 KB。 配置值[顯示如今配置的值,不作其它用途] 查看或更改此選項卡上的選項的配置值。若是更改了這些值,單擊"運行值"查看更改是否已生效。若是沒有,必須從新啓動 SQL Server 實例才能使更改生效。 運行值[顯示如今運行值,不作其它用途] 查看此選項卡上的選項的當前運行值。這些值爲只讀值。 另:若是要用命令來設置比較麻煩。以下簡單舉個例子: Set working set size 設置方法: set working set size 是一個高級選項。若是要用 sp_configure 系統存儲過程改變該選項,必須把 show advanced options 設置爲 1,該選項在中止並從新啓動服務器後生效。 設置 show advanced options 設置爲 1,在查詢分析器中運行如下命令: use master exec sp_configure 'show advanced option','1' 若是成功,會返回以下結果: DBCC 執行完畢。若是 DBCC 輸出了錯誤信息,請與系統管理員聯繫。 已將配置選項 'show advanced options' 從 1 改成 1。請運行 RECONFIGURE 語句以安裝。 設置set working set size =1,運行以下命令: use master exec sp_configure 'set working set size','1' 若是成功,會返回以下結果: DBCC 執行完畢。若是 DBCC 輸出了錯誤信息,請與系統管理員聯繫。 已將配置選項 'set working set size' 從 0 改成 1。請運行 RECONFIGURE 語句以安裝。 ………………………………………… Cache Hit Ratio(高速緩存命中率,全部Cache」的命中率。在SQL Server中,Cache能夠包括Log Cache,Buffer Cache以及Procedure Cache,是一個整體的比率。) 高速緩存命中次數和查找次數的比率。對於查看SQL Server高速緩存對於你的系統如何有效,這是一個很是好的計數器。若是這個值很低,持續低於80%,就須要增長更多的內存。 設置架構高速緩存: 架構高速緩存可顯著提升 XPath 查詢的性能。當對帶批註的 XDR 架構執行 XPath 查詢時,架構存儲在內存中,而必要的數據結構內置在內存中。若是設置了架構高速緩存,架構仍保留在內存中,於是提升了後續 Xpath 查詢的性能。 解釋: 架構-SCHEMA CREATE SCHEMA 建立一個架構,而且能夠在概念上將其看做是包含表、視圖和權限定義的對象。 CREATE SCHEMA 提供了在單個語句中建立表、視圖以及授予對象權限的方法。若是在建立任何對象或授予任何權限(這些是在 CREATE SCHEMA 語句中指定的)時發生錯誤,則不會建立任何對象。 XPath查詢-Xpath(XML Path 語言)是一種圖形導航語言 我的理解簡單的說就是在URL中指定查詢。[詳細知識參照sql server 聯機幫助文檔] 設置方法: 可經過在註冊表中添加下列鍵來設置架構高速緩存的大小: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXMLX\SchemaCacheSize。 [我在註冊表中沒找到位置!?] 根據可用內存和要使用的架構數設置架構大小。默認的架構高速緩存大小爲 31。若是設置更高的架構高速緩存大小,需使用更多的內存。所以,若是架構訪問速度慢,可增長高速緩存大小,若是內存少則可減少高速緩存的大小。 出於性能方面的考慮,建議將架構高速緩存的大小設得比一般所用的映射架構數多。當架構數增長時,若是架構高速緩存的大小比所擁有的架構數少,性能會下降