濮阳杆衣贸易有限公司

主頁 > 知識庫 > SQL Server 數(shù)據(jù)頁緩沖區(qū)的內(nèi)存瓶頸分析

SQL Server 數(shù)據(jù)頁緩沖區(qū)的內(nèi)存瓶頸分析

熱門標(biāo)簽:山西語音外呼系統(tǒng)價(jià)格 重慶防封電銷機(jī)器人供應(yīng)商 威海智能語音外呼系統(tǒng) 北京辦理400電話多少 溫州語音外呼系統(tǒng)代理 西安青牛防封電銷卡 智能語音外呼系統(tǒng)哪個(gè)牌子好 400電話申請需要開戶費(fèi)嗎 南京電銷外呼系統(tǒng)運(yùn)營商
SQL Server會把經(jīng)常使用到的數(shù)據(jù)緩存在內(nèi)存里(就是數(shù)據(jù)頁緩存),用以提高數(shù)據(jù)訪問速度。因?yàn)榇疟P訪問速度遠(yuǎn)遠(yuǎn)低于內(nèi)存,所以減少磁盤訪問量同樣是數(shù)據(jù)庫優(yōu)化的重要方面。

當(dāng)數(shù)據(jù)頁緩存區(qū)出現(xiàn)內(nèi)存不足,則會出現(xiàn)查詢慢,磁盤忙等等問題。

分析方法:主要是用到性能計(jì)數(shù)器。

查看如下性能計(jì)數(shù)器:

1. SQL SERVER:Buffer Manager-Lazy Writes/sec:內(nèi)存不足則會頻繁調(diào)用Lazy Writer把數(shù)數(shù)據(jù)寫入磁盤,此值會經(jīng)常不為0.

2. SQL SERVER:Buffer Manager-Page life expectancy:內(nèi)存不足時(shí),此計(jì)數(shù)器表現(xiàn)為下降趨勢或者一直停留在較低值。

3. SQL SERVER:Buffer Manager-Page reads/sec:內(nèi)存不足時(shí),則查詢那些經(jīng)常使用但又沒有緩存在內(nèi)存里的數(shù)據(jù)時(shí),就不需要讀取磁盤,這此值表現(xiàn)為持續(xù)上升或者停留在較高值。

4. SQL SERVER:Buffer Manager-Stolen pages:Stolen pages通常用于緩存執(zhí)行計(jì)劃,以備重用。內(nèi)存不足時(shí),SQL Server本身機(jī)制會優(yōu)先清除執(zhí)行計(jì)劃緩存,則此值表現(xiàn)為下降或者較低水平。

查詢當(dāng)前用戶任務(wù)等待:

復(fù)制代碼 代碼如下:

select * from sys.sysprocesses

如果內(nèi)存不足則,會看到較多的ASYNC_IO_COMPLETION等待類型。這是因?yàn)閮?nèi)存不足時(shí):a.內(nèi)存和磁盤間會頻繁進(jìn)行交互,磁盤負(fù)載增加 b.需要讀取磁盤上的數(shù)據(jù)完成查詢,磁盤負(fù)載增加。

也就是說這時(shí)候磁盤也出現(xiàn)了性能瓶頸,但是這只是“表面”的,我們要結(jié)合多個(gè)性能指標(biāo)來認(rèn)清根本原因是“內(nèi)存不足”。

確定壓力來源及解決辦法:

通過前的分析,確定了數(shù)據(jù)頁緩存相關(guān)的內(nèi)存瓶頸。就要分析為什么會這樣及解決辦法。主要分為如下5個(gè)方面:

1. 外部壓力

如果OS層面或者其它應(yīng)用服務(wù)需要更多的內(nèi)存,windows會壓縮Database Pages的內(nèi)存量。這時(shí)內(nèi)存壓力來自外部。可以查看如下性能計(jì)數(shù)器確定是否是外部壓力:

1. SQL Server:Memory Manager-Total Server Memory:此計(jì)數(shù)器值會下降。

2. Memory:Available Mbytes:此值會下降到較低水平。

3. 在沒有使用AWE或者Lock page in memory前提下,查看Process:Private Bytes-SqlServer和Process:Working Set-SqlServer,兩者值會有顯著下降。

解決方法:如果非DB專用服務(wù)器,則要權(quán)衡各個(gè)應(yīng)用服務(wù)之間重要性來分配內(nèi)存或者加大內(nèi)存。盡量讓服務(wù)器只運(yùn)行SQL Server,成為DB專用服務(wù)器。

2. SQL Server自身對Database Page的使用壓力

當(dāng)Total Server Memory已經(jīng)達(dá)到設(shè)定的Max Server Memory或者無法從OS獲得更多內(nèi)存,但是經(jīng)常訪問的數(shù)據(jù)量又遠(yuǎn)大于物理內(nèi)存用于數(shù)據(jù)緩存的容量時(shí),SQL Server被迫將內(nèi)存的數(shù)據(jù)移入又移出,用于完成當(dāng)前查詢。

觀察如下性能計(jì)數(shù)器:

1. SQL Server:Memory Manager-Total Server Memory 和 SQL Server:Memory Manager-Target Server Memory兩者值將會相等。但是前者不會大于后者。

2. 將會出現(xiàn)“分析方法”所述之情況。

解決方法:既然SQL Server沒有足夠內(nèi)存存放Database Page,那就要么增加SQL Server使用的內(nèi)存量或者減少其使用的內(nèi)存里。

增加:可以通增加物理內(nèi)存,啟用AWE等方法。

減少:可以通過橫向擴(kuò)展,有兩臺或者多臺服務(wù)器分別載部分庫;優(yōu)化相關(guān)讀取量較大的語句等。

3. Buffer Pool中的Stolen Memory壓力

正常情況下Buffer Pool中的Stolen Memory不會給Database Pages造成壓力。因?yàn)镈atabase Pages有壓力,會觸發(fā)Lazy Writes,同時(shí)SQL Server 會清理Stolen Memory中的執(zhí)行計(jì)劃緩存。

但是,如果用戶申明了過多的對象,而沒有登出,并且占用內(nèi)存過多,就會壓縮Database Pages.如:游標(biāo),自定義引用的執(zhí)行計(jì)劃等。

解決方法:通常是會表現(xiàn)為a)用戶提交的請求因內(nèi)存不足無法完成,701錯(cuò)誤;b)需要壓縮某些clerk的內(nèi)存量,來完成用戶請求,造成響應(yīng)延時(shí)和緩慢。

通過查詢sys.dm_os_memory_clerks的字段Single_pages_kb,找出是哪個(gè)clerk使用了過多內(nèi)存并分析其原因,然后解決之。

4. Multi-Page的壓力

multi-page跟Buffer Pool共享OS的虛擬地址空間,如果multi-page使用過多內(nèi)存,就會壓縮Datbase pages。multi-page內(nèi)存用量一般較小且相對固定,可能發(fā)生的情況有:

a. 未開啟AWE的32位SQL Server只有2G地址空間,且用-g啟動參數(shù)擴(kuò)展的MemToLeave的上限。

b. 64位SQL Server調(diào)了內(nèi)存泄露的第三方代碼。

c. 使用帶有大量參數(shù)或者較長的”IN”語句

d. 調(diào)高了Network Packet Size,大于或等于8KB,并且較多這種連接。

e. 大量復(fù)雜XML查詢,或者第三代碼。

解決方法: 通過查詢sys.dm_os_memory_clerks的字段multi_pages_kb,找出是哪個(gè)clerk使用了過多內(nèi)存并分析其原因,然后解決之。


作者:Joe.TJ
您可能感興趣的文章:
  • SQL語句實(shí)現(xiàn)查詢SQL Server內(nèi)存使用狀況
  • 優(yōu)化SQL Server的內(nèi)存占用之執(zhí)行緩存
  • SqlServer如何通過SQL語句獲取處理器(CPU)、內(nèi)存(Memory)、磁盤(Disk)以及操作系統(tǒng)相關(guān)信息
  • SQL Server 2008 R2占用cpu、內(nèi)存越來越大的兩種解決方法
  • 解決SQL Server虛擬內(nèi)存不足情況
  • 揭秘SQL Server 2014有哪些新特性(1)-內(nèi)存數(shù)據(jù)庫
  • 淺談SQL Server 對于內(nèi)存的管理[圖文]
  • SQL Server內(nèi)存遭遇操作系統(tǒng)進(jìn)程壓榨案例分析
  • SQL Server在AlwaysOn中使用內(nèi)存表的“踩坑”記錄
  • sql server學(xué)習(xí)基礎(chǔ)之內(nèi)存初探

標(biāo)簽:濟(jì)寧 新余 河源 黃山 中衛(wèi) 貸款群呼 金昌 宜春

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server 數(shù)據(jù)頁緩沖區(qū)的內(nèi)存瓶頸分析》,本文關(guān)鍵詞  SQL,Server,數(shù)據(jù),頁,緩沖區(qū),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL Server 數(shù)據(jù)頁緩沖區(qū)的內(nèi)存瓶頸分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于SQL Server 數(shù)據(jù)頁緩沖區(qū)的內(nèi)存瓶頸分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    泽普县| 永定县| 郎溪县| 武城县| 宜丰县| 和林格尔县| 铁岭市| 滦南县| 吐鲁番市| 同仁县| 嘉鱼县| 睢宁县| 泰宁县| 西安市| 辉县市| 景洪市| 五台县| 云浮市| 社会| 夏邑县| 武胜县| 麻阳| 河间市| 铁岭县| 绥棱县| 牙克石市| 随州市| 色达县| 吉木乃县| 青河县| 湟中县| 子长县| 博白县| 普定县| 香河县| 西和县| 谷城县| 宝清县| 松滋市| 环江| 太仆寺旗|