第十七期:记一次生产环境SQL Server服务器卡顿问题解决--内存分配不当
概述
最近有臺(tái)數(shù)據(jù)庫(kù)做了遷移,然后運(yùn)維人員過(guò)了一段時(shí)間發(fā)現(xiàn)這臺(tái)服務(wù)器非常卡,連遠(yuǎn)程登錄都要很久,下面記錄下其中的解決過(guò)程。
1、查看資源情況
可以發(fā)現(xiàn)內(nèi)存爆滿了,而排名第一的正是sqlserver的進(jìn)程
2、查看sqlserver內(nèi)存分配
SQL Server對(duì)服務(wù)器內(nèi)存的使用策略是用多少內(nèi)存就占用多少內(nèi)存,只用在服務(wù)器內(nèi)存不足時(shí),才會(huì)釋放一點(diǎn)占用的內(nèi)存,所以SQL Server 服務(wù)器內(nèi)存往往會(huì)占用很高。
可以看到遷移之前分配的內(nèi)存是10G,但遷移后的服務(wù)器只有8G內(nèi)存。
3、調(diào)整sqlserver內(nèi)存
這里可以把最大服務(wù)器內(nèi)存改成1G,確定后內(nèi)存就會(huì)被強(qiáng)制釋放,然后把最大服務(wù)器內(nèi)存改成合適的值。
4、查看內(nèi)存分配
正常只啟動(dòng)sqlserver服務(wù)器內(nèi)存消耗2.34G,打開(kāi)F5客戶端到3.1G,也就是消耗0.7G內(nèi)存,最后打開(kāi)下載數(shù)據(jù)的客戶端,應(yīng)該是下載數(shù)據(jù)都緩存到sqlserver內(nèi)存里面了,所以內(nèi)存一直在增加..目前穩(wěn)定在5.17G內(nèi)存,也就是這個(gè)下載消耗了2.2G內(nèi)存。
5、查看目前內(nèi)存狀態(tài):
DBCC MemoryStatus
這些內(nèi)存一般都是Sql Server運(yùn)行時(shí)候用作緩存的:
?
1) 數(shù)據(jù)緩存:執(zhí)行個(gè)查詢語(yǔ)句,Sql Server會(huì)將相關(guān)的數(shù)據(jù)頁(yè)(Sql Server操作的數(shù)據(jù)都是以頁(yè)為單位的)加載到內(nèi)存中來(lái), 下一次如果再次請(qǐng)求此頁(yè)的數(shù)據(jù)的時(shí)候,就無(wú)需讀取磁盤(pán)了,大大提高了速度。
2)執(zhí)行命令緩存:在執(zhí)行存儲(chǔ)過(guò)程,自定函數(shù)時(shí),Sql Server需要先二進(jìn)制編譯再運(yùn)行,編譯后的結(jié)果也會(huì)緩存起來(lái), 再次調(diào)用時(shí)就無(wú)需再次編譯。
總結(jié)
以上是生活随笔為你收集整理的第十七期:记一次生产环境SQL Server服务器卡顿问题解决--内存分配不当的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql005约束.列级别
- 下一篇: mysql006添加外键约束