開篇小感悟
在實(shí)際的場(chǎng)景中會(huì)遇到各種奇怪的問題,為什么會(huì)感覺到奇怪,因?yàn)闆]有理論支撐的東西才感覺到奇怪,SQL Server自己管理內(nèi)存,我們可以干預(yù)的方式也很少,所以日常很難遇到處理內(nèi)存問題的案例。當(dāng)遇到了原有的知識(shí)儲(chǔ)備已經(jīng)變得模糊,這是已經(jīng)記不住第幾遍閱讀《SQL 2012實(shí)施與管理實(shí)戰(zhàn)指南》內(nèi)存管理章節(jié),也分享給群友。
一些內(nèi)存使用錯(cuò)誤理解
本文來澄清一些用戶經(jīng)常對(duì)SQL Server內(nèi)存使用的誤解。對(duì)這些知識(shí)的理解可以幫助數(shù)據(jù)庫管理員理解SQL Server的行為
1. Windows上還有很多物理內(nèi)存沒有被使用,就意味著SQL Server不缺內(nèi)存
這個(gè)觀點(diǎn)是非常錯(cuò)誤的,因?yàn)?
(1)SQL Server很可能設(shè)置了Max Server Memory,約束了SQL Server繼續(xù)申請(qǐng)內(nèi)存的能力。(注:實(shí)際場(chǎng)景中就遇到過客戶128GB內(nèi)存的機(jī)器SQL Server 的Max Server Memory 被設(shè)置成2048MB 導(dǎo)致嚴(yán)重的問題)
(2)在32位的機(jī)器上 ,由于虛擬地址空間的限制,SQL Server可能已經(jīng)無法繼續(xù)申請(qǐng)內(nèi)存。
例如,在一臺(tái)4 GB或更大的32位服務(wù)器上,SQL Server最多只能使用2 GB物理內(nèi)存。一般Windows會(huì)使用500 MB左右的物理內(nèi)存,這臺(tái)機(jī)器可能就有1 GB多的空閑物理內(nèi)存。這部分內(nèi)存是SQL Server不開AWE就用不到的。 所以,服務(wù)器上有很多空閑物理內(nèi)存,只能說明Windows不缺內(nèi)存,不能說明SQL Server自己不缺內(nèi)存。(這也是為什么建議更換老一代服務(wù)器,使用64位的操作系統(tǒng)和SQL Server的原因)