文章編號: 918483 - 上次校閱: 2011年7月27日 - 版次: 1.0 如何降低分頁的緩衝區集區記憶體在 64 位元版本的 SQL Server
在此頁中結論Microsoft SQL Server 會執行在目前的載入與系統上的活動的記憶體需求為基礎的動態記憶體管理。在 Windows Server 2003 或 Windows XP 或更新版本的系統上,SQL Server 可使用所提供的 QueryMemoryResourceNotification Windows API 記憶體通知機制。在 Microsoft Windows 2000 Server 為基礎的系統上,SQL Server 會定期使用原生 Windows API 來計算系統上的可用實體記憶體。根據這項資訊從 QueryMemoryResourceNotification Windows API 或記憶體計算,SQL Server 會回應特定系統上的目前記憶體情況。這會提供下列好處:
徵狀在 64 位元版的 SQL Server,可能發生的各種問題。例如,可能會發生下列問題:
錯誤訊息 1 日期時間 sql server 處理序記憶體的 spid1s a 重要部分已移出。這可能會導致效能降低的情形。工期: 0 秒。工作集 (KB): 1086400,認可 (KB): 2160928,記憶體使用率: 50%。 錯誤訊息 2 日期時間 sql server 處理序記憶體的 spid1s a 重要部分已移出。這可能會導致效能降低的情形。持續時間: 315 的秒數。工作集 (KB): 410156,認可 (KB): 2201296,記憶體使用率: 18%。 錯誤訊息 3 日期時間 sql server 處理序記憶體的 spid1s a 重要部分已移出。這可能會導致效能降低的情形。持續時間: 646 的秒數。工作集 (KB): 901904,認可 (KB): 2215752,記憶體使用率: 40%。 2009-05-05 15:43:56.01 Server Resource Monitor (0x13c43) Worker 0x0412C1E8 appears to be non-yielding on Node 0. Memory freed: 34152 KB. Approx CPU Used: kernel 171 ms, user 140 ms, Interval: 125093. 2009-05-05 12:54:52.18 Server * ******************************************************************************* 2009-05-05 12:54:52.18 Server * BEGIN STACK DUMP: 2009-05-05 12:54:52.18 Server * 05/05/08 12:54:52 spid 0 2009-05-05 12:54:52.18 Server * Non-yielding Resource Monitor 2009-05-05 12:54:52.18 Server * ******************************************************************************* 2009-06-10 09:13:53.44 Server * ******************************************************************************* 2009-06-10 09:13:53.44 Server * BEGIN STACK DUMP: 2009-06-10 09:13:53.44 Server * 06/10/09 09:13:53 spid 0 2009-06-10 09:13:53.44 Server * Non-yielding IOCP Listener 2009-06-10 09:13:53.44 Server * ******************************************************************************* 2009-06-10 09:13:55.85 spid2s LazyWriter: warning, no free buffers found. 2009-07-15 13:27:45.35 spid4s AppDomain xx (SQLCLR.dbo[runtime].xx) is marked for unload due to memory pressure. 2009-07-15 13:27:45.35 spid4s AppDomain xx (SQLCLR.dbo[runtime].xx) unloaded. 2009-07-15 13:37:51.42 Logon Error: 17189, Severity: 16, State: 1. 2009-07-15 13:37:51.42 Logon SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems. [CLIENT: xx.xxx.xx.xx] Event Type: Error Event Source: SQLBrowser Event ID: 8 Description: The SQLBrowser service was unable to process a client request. 如果您注意到其中一個錯誤訊息或警告,請考慮使用這篇文章,於 [可能的原因,但不是唯一的原因討論的設定分頁 SQL Server。這些其他錯誤訊息或警告可能是因為各種其他條件或原因記錄。 發生的原因Windows 作業系統頁面外出 SQL Server 處理程序的工作集,就會發生這個問題。 這些錯誤訊息會記錄在 SQL Server 處理程序的工作組達到 50%或更少的已認可至 SQL Server 的處理序的記憶體。您可以使用這些錯誤訊息來判斷可在其中 SQL Server 效能大幅減少因為 Windows 作業系統頁面外出 SQL Server 處理程序的工作集大小寫。此外,這些錯誤訊息會記錄在第一個 30 分鐘內每隔五分鐘。在前 30 分鐘之後, 這些錯誤訊息的頻率會加倍,直到頻率到達最大值為一天。 發生這個問題時,您可能會注意到在系統上其他應用程式的工作集也移出大約在同一時間。 如需詳細資訊,請造訪下列 Microsoft 網站: http://blogs.msdn.com/psssql/archive/2007/05/31/the-sql-server-working-set-message.aspx
(http://blogs.msdn.com/psssql/archive/2007/05/31/the-sql-server-working-set-message.aspx)
此外,已知的問題在於 SQL Server 可能會收到這個錯誤訊息的執行個體。SQL Server 錯誤記錄檔會記錄錯誤訊息 SQL Server 在啟動過程。可能的假警告錯誤訊息。因此,它可能不會指出已實際發生修剪的工作集。如需詳細資訊,請造訪下列 Microsoft 網站:http://blogs.msdn.com/psssql/archive/2009/05/12/sql-server-reports-working-set-trim-warning-message-during-early-startup-phase.aspx
(http://blogs.msdn.com/psssql/archive/2009/05/12/sql-server-reports-working-set-trim-warning-message-during-early-startup-phase.aspx)
其他可行方案您嘗試解決這個問題之前,請執行 「 如何疑難排解這個問題 〉 一節,若要解決這個問題的步驟。 如果您仍然遇到這個問題,您可以防止 Windows 作業系統出 SQL Server 處理程序的緩衝區集區記憶體的分頁鎖定在實體記憶體中緩衝區集區配置的記憶體。藉由指定鎖定的記憶體 鎖定記憶體分頁 從右至用來當做 SQL Server 服務的啟動帳戶的使用者帳戶的使用者。 附註 可以使用 64 位元版的 SQL Server,只有 SQL Server 企業版 鎖定記憶體分頁 使用者權限。這只適用於 [RTM、 SP1,SP2,SP3],SQL Server 2005 和 SQL Server 2008 [RTM 和 SP1]。SQL Server 2008 SP1 累積更新 2 和 SQL Server 2005 SP3 累積更新 4 介紹使用 SQL Server 標準版本的支援 鎖定記憶體分頁 使用者權限。 如需有關鎖定頁面的支援在 64 位元系統上,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件: 970070?
(http://support.microsoft.com/kb/970070/
)
鎖定頁面的支援和 SQL Server 2008年標準版 64 位元系統上 SQL Server 2005 標準版 64 位元系統 若要指派 鎖定記憶體分頁 使用者權限,請依照下列步驟執行:
您可以驗證使用者權限的 SQL Server 執行個體所使用藉由確認在啟動時,SQL Server 錯誤記錄檔中寫入下列訊息: 緩衝集區的使用鎖定的頁面 此訊息僅適用於 64 位元版的 SQL Server。如需有關在錯誤記錄檔中此訊息的詳細資訊,請造訪下列 Microsoft 網站: http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx
(http://blogs.msdn.com/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx)
當 Windows 作業系統頁面外出 nonbuffer 集區記憶體時,您可能仍會遇到效能問題。不過,「 徵狀 〉 一節所述的錯誤訊息沒有登入 SQL Server 錯誤記錄檔。這是因為 SQL Server 處理程序的工作集通常不會到達 50%或更少的已認可的記憶體。其他相關資訊如何疑難排解這個問題如果要疑難排解這個問題,請依照下列步驟執行:
如何判斷所用的 64 位元版的 SQL Server 的記憶體您可以使用效能監視器來檢視的記憶體頁使用 64 位元版的 SQL Server。若要執行這項操作,監視下列效能計數器:效能物件: 記憶體 如需有關如何使用此計數器來判定記憶體頁面上,按一下下面的文件編號,檢視中的文件Microsoft 知識庫 」: [Pages/Sec 計數器: 889654?
(http://support.microsoft.com/kb/889654/
)
如何判斷適當的頁檔案大小為 64 位元版本的 Windows Server 2003 或 Windows XP 此外,您可以測量在 64 位元版本的 SQL Server 藉由監看下列分頁的效果效能計數器: 效能物件: 處理程序 私用位元組計數器會測量是目前已認可的記憶體。工作集計數器測量目前所佔用的處理程序的實體記憶體。64 位元版的 SQL Server 也會使用下列效能計數器來公開 (expose) 緩衝集區配置的記憶體: 計數器: 私用位元組 執行個體: sqlservr 效能物件: 處理程序 計數器: 工作集 執行個體: sqlservr 效能物件: SQL Server: 記憶體管理員 附註 如果 SQL Server 64 位元版的執行個體為具名的執行個體,效能物件的名稱如下所示:總伺服器 Memory(KB) 計數器: MSSQL $InstanceName: 記憶體管理員 如果工作集計數器的值小於總伺服器 Memory(KB) 計數器的值,已修剪屬於緩衝集區的最少一些記憶體工作集 SQL Server。分派後 鎖定記憶體分頁 使用者權限,並重新啟動 SQL Server 服務,緩衝集區的 SQL Server 程序還是能回應記憶體資源告知事件,以及它動態地增加或減少回應這些事件。不過,您無法看到鎖在記憶體中的下列效能計數器的記憶體配置的緩衝區集區:
您指派的 「 將網頁鎖在記憶體中 」 使用者權限 SQL Server 是 64 位元版本的執行個體之前的重要注意事項您指派之前,您應該先其他考量 鎖定記憶體分頁 使用者權限。如果您指派此使用者權限設定不正確的系統上,系統可能會變得不穩定或發生整個系統效能降低。此外,事件記錄檔可能會記錄事件識別碼 333。若您連絡 Microsoft 客戶支援服務 」 (CSS) 的這些問題時,CSS 工程師可能會要求您撤銷此使用者權限,用來當做 SQL Server 服務的啟動帳戶的使用者帳戶。這個步驟可能需要收集 CSS 工程師可以使用 SQL Server,以及其他系統執行的應用程式的各種選項的必要組態的重要效能資料。CSS 工程師收集效能資料之後,您可以指派 鎖定記憶體分頁 從右至 SQL Server 服務的啟動帳戶的使用者。 指派之前 鎖定記憶體分頁 使用者權限,請確定您擷取效能監視器記錄檔來判斷記憶體需求的不同應用程式和系統已安裝的服務。這些應用程式也包含了 SQL Server。若要判斷記憶體需求,請收集下列的比較基準資訊:
如何使用由 SQL Server 環狀緩衝區的資訊來判斷記憶體的情況時便會發生分頁您可以使用 SQL Server 環狀緩衝區中的資訊來判斷伺服器上記憶體的情況時便會發生分頁。您可以使用下列指令碼之類的指令碼來取得這項資訊。附註 此查詢是有效的 SQL Server 2005 和 SQL Server 2008年。 您可以查詢中若要了解系統是否發生記憶體不足狀況動態管理檢視 sys.dm_os_process_memory 所提供的資訊。如需詳細資訊,請參閱下列 MSDN 網站位於 SQL Server 2008年線上叢書 》 的參考: http://msdn.microsoft.com/en-us/library/bb510747.aspx
(http://msdn.microsoft.com/en-us/library/bb510747.aspx)
SQL Server 2008 R2 BPA 資訊SQL Server 2008 R2 最佳練習分析器 (SQL Server 2008 R2 BPA) 提供多個規則,以偵測可能會導致工作集調整 SQL Server 程序的情況。SQL Server 2008 R2 BPA 支援 SQL Server 2008年和 SQL Server 2008 R2。如果您執行 BPA 工具,會收到警告,「 資料庫引擎-SQL Server 記憶體的設定不正確,「 您要檢查的 SQL Server 這個執行個體的最大伺服器記憶體設定,依照一節中的建議 」 之前的重要考量事項指派 '將網頁鎖在記憶體中' 使用者權 SQL Server 是 64 位元版本的執行個體 」 的這份文件。 如果您執行 BPA 工具,並遇到錯誤,「 資料庫引擎-操作系統檔案和驅動程式需要更新的工作集修剪 」 您需要檢閱本文 〈 解決方案 〉 一節中所討論的所有修正程式,並將其套用。 如果您執行 BPA 工具,但發生錯誤 「 資料庫引擎-記憶體已移出,SQL Server 的很大部分"您要檢閱本文的 〈 解決方案 〉 和 〈 解決方法 〉 章節,並採取適當的動作。
|
| 規則軟體 | 規則標題 | 規則識別碼 |
| SQL Server 2008 R2 BPA 規則 | SQL Server 的記憶體設定不正確 | RID3804 |
| SQL Server 2008 R2 BPA 規則 | 作業系統檔案及驅動程式需要更新的工作集修剪 | RID0059 |
| SQL Server 2008 R2 BPA 規則 | SQL Server 記憶體的重要部分已移出 | RID0049 |
在 Windows Server 2008 中,並在 Windows Server 2008 R2 的改進
Windows Server 2008 和 Windows Server 2008 R2 改善的連續記憶體配置機制。這項改良功能可讓 Windows Server 2008 和 Windows Server 2008 R2 減少某一程度的應用程式的工作集的分頁影響新的記憶體要求抵達時。
下列是從 Microsoft 白皮書 」 往前推進中記憶體管理在 Windows 「 改進的說明:
在 Windows Server 2008,大幅增強的實體上連續的記憶體配置。若要配置的連續記憶體的要求是很有可能成功,因為記憶體管理員現在動態取代的網頁,通常不需要修剪的工作集或執行 I/O 作業。此外,許多其他類型的頁面 — 例如核心 」 堆疊與檔案系統中繼資料分頁,等等 — 會立即取代的對象。因此,多個連續的記憶體是通常可用在任何指定時間。此外,若要取得這種配置的成本就會大幅降低。
若要檢視 [往前推進中記憶體管理中 Windows 」 白皮書,請造訪下列 Microsoft 網站:http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/MemMgt.docx
(http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/MemMgt.docx)
如需詳細資訊,請造訪下列 Microsoft 網站:http://blogs.msdn.com/psssql/archive/2008/03/03/sql-server-working-set-trim-problems-consider.aspx
(http://blogs.msdn.com/psssql/archive/2008/03/03/sql-server-working-set-trim-problems-consider.aspx)
http://support.microsoft.com/kb/2001745
(http://support.microsoft.com/kb/2001745)
附註 在 Windows Server 2008 為基礎的電腦上,您必須安裝 SQL Server Service Pack 2 (SP2) 或更新版本的 SQL Server service pack。本文將告訴您的協力廠商產品製造所公司 Microsoft 無關。Microsoft 會使任何擔保、 默示或其他有關這些產品的可靠性。
這篇文章中的資訊適用於:
- Microsoft SQL Server 2005 Standard X64 Edition
- Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
- Microsoft SQL Server 2005 Enterprise X64 Edition
- Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
- Microsoft SQL Server 2008 Standard
- Microsoft SQL Server 2008 Enterprise
關鍵字:? | kbsqlsetup kbsql2005engine kbexpertiseadvanced kbinfo kbmt KB918483 KbMtzh |
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:918483?
(http://support.microsoft.com/kb/918483/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
其他資源
其他支援網站
社群
立即取得協助
文章翻譯
- (????? ?????? (???????
- Brasil (Portugu?s)
- ?esk? republika (?e?tina)
- Deutschland (Deutsch)
- Espa?a, Latinoam?rica (Espa?ol)
- France (Fran?ais)
- Indonesia (Bahasa Indonesia)
- Italia (Italiano)
- Polska (Polski)
- Portugal (Portugu?s)
- Slovensk? Republika (Sloven?ina)
- T?rkiye (T?rk?e)
- Vi?t Nam (Ti?ng Vi?t)
- Ελλ?δα (Ελληνικ?)
- ?????? (???????)
- ???? (?????)
- ??? (???)
- ???? (???)
- 中? (?体中文)
- 日本 (日本語)






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email

回此頁最上方
