內(nèi)存問題定位基本流程:
武陟網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),武陟網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為武陟上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的武陟做網(wǎng)站的公司定做!
主要用到的性能計(jì)數(shù)器
Page life expectancy (數(shù)據(jù)庫計(jì)數(shù)器:主要顯示不被使用的頁,將在緩存中停留的秒數(shù) )
Lazy writes/sec ?。〝?shù)據(jù)庫計(jì)數(shù)器:惰性寫入器會(huì)在內(nèi)存有壓力且有新的內(nèi)存需求時(shí)觸發(fā),成批的刷新“老化的緩沖區(qū)”)
Page Reads/sec,Page Writes/sec (這里使用數(shù)據(jù)庫級(jí)別計(jì)數(shù)器:當(dāng)需要讀取或?qū)懭氲捻摬辉趦?nèi)存中,需要到磁盤中讀取時(shí)計(jì)數(shù))
Target Server Memory (KB) (SQL server能夠使用的內(nèi)存總量)
Total Server Memory (KB) (SQL SERVER使用的內(nèi)存總量,這里指BUFFER POOL的大小)
Available MBytes (系統(tǒng)系數(shù)器:主要顯示系統(tǒng)還有多少可用內(nèi)存)
注:Target Server Memory (KB) - Total Server Memory (KB) 約等于SQL SERVER還可以使用的內(nèi)存數(shù)。
Total Server Memory (KB)(SQL SERVER使用的內(nèi)存總量,這里指BUFFER POOL的大?。┛梢圆榭碨QL Server使用的內(nèi)存總量,如果當(dāng)使用的內(nèi)存總量很小,而服務(wù)器依然有很大的內(nèi)存Available MBytes請(qǐng)檢查,是否限制了SQL Server的內(nèi)存使用。
Available MBytes 主要顯示系統(tǒng)中還多少空閑內(nèi)存 (如果這個(gè)值較大,而Target Server Memory (KB) - Total Server Memory (KB) 為0或者較小,可以適當(dāng)?shù)恼{(diào)大max server memory(最大內(nèi)存,稍后介紹))
如果Total Server Memory (KB) 計(jì)數(shù)器有陡降的情況發(fā)生,一般可以說明有外部程序?qū)?nèi)存的使用占用的數(shù)據(jù)庫使用的內(nèi)存。
步驟2.內(nèi)存問題定位
內(nèi)存持續(xù)壓力
Lazy writes/sec
Page life expectancy
內(nèi)存波動(dòng)壓力
Page Reads/sec
Lazy writes/sec
Page life expectancy
步驟3.內(nèi)存問題分析與解決(通用步驟)
系統(tǒng)設(shè)置最大內(nèi)存max server memory
問:我系統(tǒng)內(nèi)存本來就不夠?yàn)槭裁催€要設(shè)置使用上限?我這服務(wù)器就給數(shù)據(jù)庫用還用設(shè)置?
答:數(shù)據(jù)庫是運(yùn)行在windows 上的應(yīng)用,他和notepad對(duì)于操作系統(tǒng)來說本質(zhì)上沒區(qū)別,那么這就好比君(操作系統(tǒng))與 臣(數(shù)據(jù)庫)的關(guān)系。
而SQL SERVER是一個(gè)很喜歡內(nèi)存的應(yīng)用,所以很可能吃掉大量?jī)?nèi)存導(dǎo)致windows系統(tǒng)沒有足夠內(nèi)存使用,,那么這時(shí)候君臣關(guān)系就體現(xiàn)的淋漓盡致了,君(windows) 要臣(SQL SERVER)死(釋放內(nèi)存)臣不得不死呀...這個(gè)釋放在一定程度上可不是單單讓windows夠用了,很可能導(dǎo)致SQL內(nèi)存陡降,以致SQL 短時(shí)間假死(操作無響應(yīng))。所以為了你數(shù)據(jù)庫的穩(wěn)定性,這個(gè)最大上限一定要設(shè)置。
內(nèi)存設(shè)置推薦:
一般我比較推薦如果內(nèi)存較小操作系統(tǒng)預(yù)留3G-4G ,如果內(nèi)存大256或512以上在數(shù)據(jù)庫內(nèi)存無壓力時(shí)預(yù)留5%給操作系統(tǒng),剩下給SQL SERVER ,如果服務(wù)器還有其他應(yīng)用還要在SQL 中減掉應(yīng)用所占的內(nèi)存。
如果內(nèi)存比較小且數(shù)據(jù)庫內(nèi)存壓力大,則可以通過前面講述的Available MBytes 的判斷結(jié)果適量給系統(tǒng)預(yù)留內(nèi)存。
注意:最大內(nèi)存的設(shè)置單位為 MB。
語句優(yōu)化系列請(qǐng)關(guān)注后續(xù)文章,這里只針對(duì)降低內(nèi)存
降低內(nèi)存對(duì)語句優(yōu)化主要集中在幾個(gè)方面:
是否缺失索引?
消耗內(nèi)存的操作是否可以消除(如排序)
降低語句復(fù)雜性,讓優(yōu)化器能選用最佳計(jì)劃
語句消耗內(nèi)存主要體現(xiàn)在大量的讀取,或者有排序等操作。
所謂的讀,簡(jiǎn)單理解就是在語句執(zhí)行時(shí)所需要用到的數(shù)據(jù)頁數(shù),需要的越多就需要越大的內(nèi)存來緩存這些數(shù)據(jù)頁。如果需要的頁不在內(nèi)存中還需要從磁盤讀取 (磁盤讀取就是為什么Page Reads/sec 會(huì)高)
簡(jiǎn)單的一個(gè)加索引降低邏輯讀的例子~
語句使用了一個(gè)整個(gè)表掃描的計(jì)劃,執(zhí)行了 19秒,邏輯讀取143800次,預(yù)讀137236 (磁盤上讀?。牧?0KB 的內(nèi)存 ,并且明確提示出缺少索引!
那么我們加上提示缺少的索引,再次執(zhí)行
加上索引的語句執(zhí)行不到1秒 邏輯讀降低到13次,內(nèi)存消耗已經(jīng)可以忽略不計(jì)。這就是索引對(duì)語句的重要性!單條語句如此,你的系統(tǒng)中到底有多少這樣的語句呢?
再來看一個(gè)寫法修改的例子 :
只是簡(jiǎn)單的改了下語句的寫法時(shí)間有7秒變成1秒,內(nèi)存消耗從300+MB 變成 1MB
這兩個(gè)例子,告訴我們也許系統(tǒng)中簡(jiǎn)簡(jiǎn)單單做一些調(diào)整,內(nèi)存的壓力就會(huì)明顯降低或者變得非常充足,所以在你下了一個(gè)需要購買內(nèi)存的決定前,是否針對(duì)系統(tǒng)的語句進(jìn)行過調(diào)優(yōu)?
內(nèi)存波動(dòng)
如果你是系統(tǒng)維護(hù)人員,看到類似這樣的內(nèi)存數(shù)據(jù)指標(biāo),如果你還不能有一些思路,請(qǐng)你好好熟悉下你的系統(tǒng)。
這張圖很清晰地反映出系統(tǒng)每隔幾小時(shí)會(huì)有一次的內(nèi)存壓力,那么別忙著去找對(duì)應(yīng)時(shí)間點(diǎn)的語句,我們最少要好好想一下,系統(tǒng)中有什么操作定時(shí)執(zhí)行?SQL JOB?計(jì)劃任務(wù)?前臺(tái)定時(shí)處理?等等等
這個(gè)規(guī)律的定時(shí)處理是否有異常?是否最近有什么改動(dòng)?執(zhí)行的結(jié)果是不是和你想的一樣?
也許問題就這么清晰的定位了......
網(wǎng)站標(biāo)題:內(nèi)存問題定位與解決
標(biāo)題來源:http://jinyejixie.com/article16/poscgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、品牌網(wǎng)站制作、外貿(mào)建站、動(dòng)態(tài)網(wǎng)站、電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)