MSSQL數(shù)據(jù)庫占用內(nèi)存過大造成服務(wù)器死機問題的解決方法
更新時間:2013年07月06日 19:55:53 作者:
有時候我們的服務(wù)器使用MSSQL數(shù)據(jù)庫,但如果MSSQL數(shù)據(jù)庫占用內(nèi)存過大可能導(dǎo)致服務(wù)器死機,這里分享下解決方法, 需要的朋友可以參考下
使用MSSQL的站長朋友都會被MSSQL數(shù)據(jù)庫吃內(nèi)存的能力佩服得五體投地,一個小小的網(wǎng)站,運行若干天之后,MSSQL就會把服務(wù)器上所有的內(nèi)存都吃光,此時你不得不重新啟動一下服務(wù)器或MSSQL來釋放內(nèi)存,有人認(rèn)為是MSSQL有內(nèi)存泄露問題,其實不然,微軟給我們了明確說明:
在您啟動 SQL Server 之后,SQL Server 內(nèi)存使用量將會持續(xù)穩(wěn)定上升,即使當(dāng)服務(wù)器上活動很少時也不會下降。另外,任務(wù)管理器和性能監(jiān)視器將顯示計算機上可用的物理內(nèi)存穩(wěn)定下降,直到可用內(nèi)存降到 4 至 10 MB 為止。
僅僅出現(xiàn)這種狀態(tài)不表示內(nèi)存泄漏。此行為是正常的,并且是 SQL Server 緩沖池的預(yù)期行為。
默認(rèn)情況下,SQL Server 根據(jù)操作系統(tǒng)報告的物理內(nèi)存加載動態(tài)增大和收縮其緩沖池(緩存)的大小。只要有足夠的內(nèi)存可用于防止內(nèi)存頁面交換(在 4 至 10 MB 之間),SQL Server 緩沖池就會繼續(xù)增大。像在與 SQL Server 分配內(nèi)存位于相同計算機上的其他進(jìn)程一樣,SQL Server 緩沖區(qū)管理器將在需要的時候釋放內(nèi)存。SQL Server 每秒可以釋放和獲取幾兆字節(jié)的內(nèi)存,從而使它可以快速適應(yīng)內(nèi)存分配變化。
更多信息
您可以通過服務(wù)器內(nèi)存最小值和服務(wù)器內(nèi)存最大值配置選項設(shè)置 SQL Server 數(shù)據(jù)庫引擎使用的內(nèi)存(緩沖池)量的上下限。在設(shè)置服務(wù)器內(nèi)存最小值和服務(wù)器內(nèi)存最大值選項之前,請查閱以下 Microsoft 知識庫文章中標(biāo)題為"內(nèi)存"一節(jié)中的參考信息:
319942 HOW TO:Determine Proper SQL Server Configuration Settings(確定正確的 SQL Server 配置設(shè)置)
請注意,服務(wù)器內(nèi)存最大值選項只限制 SQL Server 緩沖池的大小。服務(wù)器內(nèi)存最大值選項不限制剩余的未保留內(nèi)存區(qū)域,SQL Server 準(zhǔn)備將該區(qū)域分配給其他組件,例如擴展存儲過程、COM 對象、以及非共享 DLL、EXE 和 MAPI 組件。由于前面的分配,SQL Server 專用字節(jié)超過服務(wù)器內(nèi)存最大值配置是很正常的。有關(guān)此未保留內(nèi)存區(qū)域中分配的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應(yīng)的文章:
316749 PRB:在使用大量數(shù)據(jù)庫時可能沒有足夠的虛擬內(nèi)存
參考
SQL Server 聯(lián)機圖書;主題:"服務(wù)器內(nèi)存最小值和最大值的影響";"內(nèi)存體系結(jié)構(gòu)";"服務(wù)器內(nèi)存選項";"SQL Server 內(nèi)存池"
下面我們就來實戰(zhàn)如何限制MSSQL內(nèi)存使用:
第一步:打開企業(yè)管理雙擊進(jìn)入要修改的MSSQL.

第二步:在左側(cè)MSSQL上點擊右鍵,選擇屬性,彈出SQL Server屬性(配置)對話框

第三步:點擊內(nèi)存選項卡.

在這里,你會看到MSSQL默認(rèn)設(shè)置為使用最大內(nèi)存,也就是你所有的內(nèi)存,根據(jù)你的需要,設(shè)置它的最大值吧.
第五步:設(shè)置完畢,關(guān)閉MSSQL服務(wù)再重啟,配置即可生效!
在您啟動 SQL Server 之后,SQL Server 內(nèi)存使用量將會持續(xù)穩(wěn)定上升,即使當(dāng)服務(wù)器上活動很少時也不會下降。另外,任務(wù)管理器和性能監(jiān)視器將顯示計算機上可用的物理內(nèi)存穩(wěn)定下降,直到可用內(nèi)存降到 4 至 10 MB 為止。
僅僅出現(xiàn)這種狀態(tài)不表示內(nèi)存泄漏。此行為是正常的,并且是 SQL Server 緩沖池的預(yù)期行為。
默認(rèn)情況下,SQL Server 根據(jù)操作系統(tǒng)報告的物理內(nèi)存加載動態(tài)增大和收縮其緩沖池(緩存)的大小。只要有足夠的內(nèi)存可用于防止內(nèi)存頁面交換(在 4 至 10 MB 之間),SQL Server 緩沖池就會繼續(xù)增大。像在與 SQL Server 分配內(nèi)存位于相同計算機上的其他進(jìn)程一樣,SQL Server 緩沖區(qū)管理器將在需要的時候釋放內(nèi)存。SQL Server 每秒可以釋放和獲取幾兆字節(jié)的內(nèi)存,從而使它可以快速適應(yīng)內(nèi)存分配變化。
更多信息
您可以通過服務(wù)器內(nèi)存最小值和服務(wù)器內(nèi)存最大值配置選項設(shè)置 SQL Server 數(shù)據(jù)庫引擎使用的內(nèi)存(緩沖池)量的上下限。在設(shè)置服務(wù)器內(nèi)存最小值和服務(wù)器內(nèi)存最大值選項之前,請查閱以下 Microsoft 知識庫文章中標(biāo)題為"內(nèi)存"一節(jié)中的參考信息:
319942 HOW TO:Determine Proper SQL Server Configuration Settings(確定正確的 SQL Server 配置設(shè)置)
請注意,服務(wù)器內(nèi)存最大值選項只限制 SQL Server 緩沖池的大小。服務(wù)器內(nèi)存最大值選項不限制剩余的未保留內(nèi)存區(qū)域,SQL Server 準(zhǔn)備將該區(qū)域分配給其他組件,例如擴展存儲過程、COM 對象、以及非共享 DLL、EXE 和 MAPI 組件。由于前面的分配,SQL Server 專用字節(jié)超過服務(wù)器內(nèi)存最大值配置是很正常的。有關(guān)此未保留內(nèi)存區(qū)域中分配的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應(yīng)的文章:
316749 PRB:在使用大量數(shù)據(jù)庫時可能沒有足夠的虛擬內(nèi)存
參考
SQL Server 聯(lián)機圖書;主題:"服務(wù)器內(nèi)存最小值和最大值的影響";"內(nèi)存體系結(jié)構(gòu)";"服務(wù)器內(nèi)存選項";"SQL Server 內(nèi)存池"
下面我們就來實戰(zhàn)如何限制MSSQL內(nèi)存使用:
第一步:打開企業(yè)管理雙擊進(jìn)入要修改的MSSQL.

第二步:在左側(cè)MSSQL上點擊右鍵,選擇屬性,彈出SQL Server屬性(配置)對話框

第三步:點擊內(nèi)存選項卡.

在這里,你會看到MSSQL默認(rèn)設(shè)置為使用最大內(nèi)存,也就是你所有的內(nèi)存,根據(jù)你的需要,設(shè)置它的最大值吧.
第五步:設(shè)置完畢,關(guān)閉MSSQL服務(wù)再重啟,配置即可生效!
相關(guān)文章
sql IDENTITY_INSERT對標(biāo)識列的作用和使用
本文主要介紹了sql IDENTITY_INSERT對標(biāo)識列的作用和使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01萬能密碼的SQL注入漏洞其PHP環(huán)境搭建及防御手段
這篇文章主要介紹了萬能密碼的SQL注入漏洞其PHP環(huán)境搭建及防御手段,對此感興趣的小伙伴趕快收藏起來吧2021-09-09SQL Server中row_number函數(shù)的常見用法示例詳解
這篇文章主要給大家介紹了關(guān)于SQL Server中row_number函數(shù)的常見用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09SQL SERVER 的SQL語句優(yōu)化方式小結(jié)
千辛萬苦,終于把數(shù)據(jù)庫服務(wù)器的CPU從超過50%(開5個程序線程)乃至100%(開10個程序線程)降低到了5%。摸索到了一些門道,總結(jié)一下2009-08-08sqlserver 自動備份所有數(shù)據(jù)庫的SQL
可自動備份除系統(tǒng)數(shù)據(jù)庫外的所有數(shù)據(jù)庫。備份文件的周期保存周期可以更改。2010-03-03SQL Server跨服務(wù)器操作數(shù)據(jù)庫的圖文方法(LinkedServer)
這篇文章主要介紹了SQL Server跨服務(wù)器操作數(shù)據(jù)庫的方法,通過鏈接服務(wù)器(LinkedServer)實現(xiàn)SQL Server遠(yuǎn)程鏈接MySql等數(shù)據(jù)庫,需要的朋友可以參考下2022-10-10sql查詢一個數(shù)組中是否包含某個內(nèi)容find_in_set問題
這篇文章主要介紹了sql查詢一個數(shù)組中是否包含某個內(nèi)容find_in_set問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01