最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2012年08月03日 17:26:54   作者:  
數(shù)據(jù)頁(yè)緩存是SQL Server的內(nèi)存使用主要的方面,也是占用量最大的部分。在一個(gè)穩(wěn)定的DB Server上,這部分內(nèi)存使用會(huì)相對(duì)較穩(wěn)定
SQL Server會(huì)把經(jīng)常使用到的數(shù)據(jù)緩存在內(nèi)存里(就是數(shù)據(jù)頁(yè)緩存),用以提高數(shù)據(jù)訪問(wèn)速度。因?yàn)榇疟P訪問(wèn)速度遠(yuǎn)遠(yuǎn)低于內(nèi)存,所以減少磁盤訪問(wèn)量同樣是數(shù)據(jù)庫(kù)優(yōu)化的重要方面。

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

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

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

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

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

3. SQL SERVER:Buffer Manager-Page reads/sec:內(nèi)存不足時(shí),則查詢那些經(jīng)常使用但又沒(méi)有緩存在內(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ī)制會(huì)優(yōu)先清除執(zhí)行計(jì)劃緩存,則此值表現(xiàn)為下降或者較低水平。

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

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

select * from sys.sysprocesses

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

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

確定壓力來(lái)源及解決辦法:

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

1. 外部壓力

如果OS層面或者其它應(yīng)用服務(wù)需要更多的內(nèi)存,windows會(huì)壓縮Database Pages的內(nèi)存量。這時(shí)內(nèi)存壓力來(lái)自外部??梢圆榭慈缦滦阅苡?jì)數(shù)器確定是否是外部壓力:

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

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

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

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

2. SQL Server自身對(duì)Database Page的使用壓力

當(dāng)Total Server Memory已經(jīng)達(dá)到設(shè)定的Max Server Memory或者無(wú)法從OS獲得更多內(nèi)存,但是經(jīng)常訪問(wèn)的數(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兩者值將會(huì)相等。但是前者不會(huì)大于后者。

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

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

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

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

3. Buffer Pool中的Stolen Memory壓力

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

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

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

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

4. Multi-Page的壓力

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

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

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

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

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

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

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


作者:Joe.TJ

相關(guān)文章

  • 當(dāng)master down掉后,pt-heartbeat不斷重試會(huì)導(dǎo)致內(nèi)存緩慢增長(zhǎng)的原因及解決辦法

    當(dāng)master down掉后,pt-heartbeat不斷重試會(huì)導(dǎo)致內(nèi)存緩慢增長(zhǎng)的原因及解決辦法

    這篇文章主要介紹了當(dāng)master down掉后,pt-heartbeat不斷重試會(huì)導(dǎo)致內(nèi)存緩慢增長(zhǎng)的原因及解決辦法,需要的朋友可以參考下
    2016-10-10
  • SQL cursor用法實(shí)例

    SQL cursor用法實(shí)例

    這篇文章介紹了SQL cursor用法實(shí)例,有需要的朋友可以參考一下
    2013-09-09
  • 學(xué)會(huì)sql數(shù)據(jù)庫(kù)關(guān)系圖(Petshop)

    學(xué)會(huì)sql數(shù)據(jù)庫(kù)關(guān)系圖(Petshop)

    花了這么多時(shí)間最終還是回到了數(shù)據(jù)庫(kù),但是數(shù)據(jù)庫(kù)中一張一張的表格找不到腳本,也不是自己設(shè)計(jì)的數(shù)據(jù)庫(kù),完全沒(méi)有一點(diǎn)頭緒,后來(lái)突然想起來(lái)sql有個(gè)數(shù)據(jù)庫(kù)關(guān)系圖,可以很快的適合數(shù)據(jù)庫(kù)程序員很快的掌握數(shù)據(jù)庫(kù)表之間的關(guān)系
    2012-08-08
  • SQL Server 2008 清空刪除日志文件(瞬間縮小日志到幾M)

    SQL Server 2008 清空刪除日志文件(瞬間縮小日志到幾M)

    sql 在使用中每次查詢都會(huì)生成日志,但是如果你長(zhǎng)久不去清理,可能整個(gè)硬都堆滿哦,筆者就遇到這樣的情況,直接網(wǎng)站后臺(tái)都進(jìn)不去了。下面我們一起來(lái)學(xué)習(xí)一下如何清理這個(gè)日志吧
    2018-10-10
  • SQL server 中 CROSS APPLY的使用及用途

    SQL server 中 CROSS APPLY的使用及用途

    CROSS APPLY是SQL Server中的操作符,用于將表表達(dá)式與外部表連接,它允許在查詢中多次引用外部表的行,并根據(jù)每行動(dòng)態(tài)生成結(jié)果集,而OUTER APPLY則類似于LEFT JOIN,后者即使子查詢無(wú)結(jié)果也會(huì)顯示外部表的行,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • sqlserver字符串拼接的實(shí)現(xiàn)

    sqlserver字符串拼接的實(shí)現(xiàn)

    本文主要介紹了sqlserver字符串拼接的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • sql中all,any,some用法

    sql中all,any,some用法

    sql中all,any,some用法實(shí)現(xiàn)語(yǔ)句,需要的朋友可以看下。
    2009-10-10
  • mssql和sqlite中關(guān)于if not exists 的寫法

    mssql和sqlite中關(guān)于if not exists 的寫法

    本文介紹下sql server查詢中,有關(guān)if exists與if not exists關(guān)鍵字的用法,有需要的朋友參考下
    2014-04-04
  • SQL?Server?Agent?服務(wù)啟動(dòng)后又停止問(wèn)題

    SQL?Server?Agent?服務(wù)啟動(dòng)后又停止問(wèn)題

    這篇文章主要介紹了SQL?Server?Agent?服務(wù)啟動(dòng)后又停止問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法

    sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法

    重復(fù)數(shù)據(jù),通常有兩種:一是完全重復(fù)的記錄,也就是所有字段的值都一樣;二是部分字段值重復(fù)的記錄
    2013-05-05

最新評(píng)論

巴彦县| 方正县| 瑞昌市| 西乌| 灵武市| 南涧| 偃师市| 嘉义县| 南木林县| 雷州市| 黄龙县| 巴林左旗| 阳春市| 安顺市| 镇赉县| 襄樊市| 蒙山县| 广宁县| 叙永县| 南召县| 徐汇区| 奈曼旗| 庆城县| 平山县| 芜湖市| 新乐市| 合江县| 安徽省| 响水县| 白水县| 新巴尔虎左旗| 河源市| 尤溪县| 赫章县| 宝山区| 墨竹工卡县| 新绛县| 沐川县| 天津市| 临邑县| 亚东县|