婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL Server性能調優(yōu)之緩存

SQL Server性能調優(yōu)之緩存

熱門標簽:家庭農場地圖標注名稱怎樣起名 電銷需要外呼系統(tǒng)嗎 千呼電話機器人可以試用嗎 電話機器人怎么代理商 400電話辦理泰安 安卡拉地圖標注app 我要地圖標注數量有限制嗎 零成本地圖標注賺錢 互聯(lián)網電話外呼系統(tǒng)

在執(zhí)行任何查詢時,SQL Server都會將數據讀取到內存,數據使用之后,不會立即釋放,而是會緩存在內存Buffer中,當再次執(zhí)行相同的查詢時,如果所需數據全部緩存在內存中,那么SQL Server不會產生Disk IO操作,立即返回查詢結果,這是SQL Server的性能優(yōu)化機制。

一,主要的內存消費者(Memory Consumer)

1,數據緩存(Data Cache)

Data Cache是存儲數據頁(Data Page)的緩沖區(qū),當SQL Server需要讀取數據文件(File)中的數據頁(Data Page)時,SQL Server會把整個Page都調入內存(內存中的一個Page叫做buffer),Page是數據訪問的最小單元。

當用戶修改了某個Page上的數據時,SQL Server 會先在內存中修改Buffer,但是不會立即將這個數據葉寫回硬盤,而是等到CheckPoint或lazy Writer進程運行時集中處理。當用戶讀取某個Page后,如果SQL Server沒有內存壓力,它不會在內存中刪除這個Page,因為內存中的數據頁始終存放著數據的最新狀態(tài),如果有其他用戶使用這個Page,SQL Server 不需要從硬盤中讀取一次,節(jié)省語句執(zhí)行的時間。理想情況是SQL Server將用戶需要訪問的所有數據都緩存在內存中,SQL Server 永遠不需要去硬盤讀取數據,只需要在CheckPoint 或 lazy Write運行時把修改過的頁面寫回硬盤即可

2,查詢計劃緩存(Query Plan Cache)

存儲查詢語句和存儲過程的執(zhí)行計劃,以供重用,而不需要重新編譯(Compile),因為編譯查詢語句產生執(zhí)行計劃是一個非常耗費資源的過程。

二,查看內存消耗

在SQL Server中,只有內存書記員(Memory Clerk)能夠分配內存,Memory Clerk會記錄已經分配內存的數量,任何一個需要使用內存的對象,必須創(chuàng)建自己的Memory Clerk,并使用該Memory clerk來分配內存。

1,查看Memory clerk分配的內存量

select memory_node_id, 
 type,
 pages_kb,
 virtual_memory_reserved_kb,
 virtual_memory_committed_kb,
 shared_memory_reserved_kb,
 shared_memory_committed_kb,
 page_size_in_bytes
from sys.dm_os_memory_clerks 
where type = 'MEMORYCLERK_SQLQERESERVATIONS'

對于內存結點64,只在DAC中使用。

2,統(tǒng)計Memory Clerk分配的內存總量

select mc.type,mc.name,
 sum(mc.pages_kb) as AllocatedPages_KB,
 sum(mc.virtual_memory_reserved_kb) as VM_Reserved_KB,
 sum(mc.virtual_memory_committed_kb) as VM_Committed_KB,
 --sum(mc.shared_memory_reserved_kb) as ShareMem_Reserved_KB,
 --sum(mc.shared_memory_committed_kb) as ShareMem_Committed_KB,
 max(mc.page_size_in_bytes)/1024 as SinglePageSize_KB
from sys.dm_os_memory_clerks mc
group by mc.type,mc.name
order by AllocatedPages_KB desc,mc.type,mc.name

消耗內存較大的Clerk是:

  • MEMORYCLERK_SQLBUFFERPOOL:基本是Buffer Pool中page的大小
  • OBJECTSTORE_LOCK_MANAGER:鎖結構使用的內存,當發(fā)生嚴重的鎖阻塞時,這表明系統(tǒng)中,存儲大量鎖,造成鎖管理占用大量的內存;
  • CACHESTORE_OBJCP:觸發(fā)器和存儲過程等模塊(Module)的執(zhí)行計劃占用的緩存空間;
  • CACHESTORE_SQLCP:動態(tài)TSQL語句,即席(Adhoc)查詢和預編譯(Prepared) TSQL的執(zhí)行計劃緩存;
  • CACHESTORE_COLUMNSTOREOBJECTPOOL:列存儲索引(ColumnStore Index)占用的緩存

3,查看緩存中的數據頁

當數據頁從硬盤讀取到內存之后,該數據頁被復制到緩沖池(Buffer Pool),供SQL Server重用。每個緩存的數據頁都有一個緩存描述器(Buffer Descriptor),用戶唯一標識內存中的數據頁,在SQL Server實例中緩存的每一個數據頁,都能從 sys.dm_os_buffer_descriptors 查看緩存描述的信息。

select DB_NAME(bd.database_id) as dbname,
 OBJECT_NAME(p.object_id) as ObjectName,
 i.name as IndexName,
 count(0) as BufferCounts,
 sum(bd.free_space_in_bytes)/1024 as TotalFreeSpace_KB,
 cast(sum(bd.free_space_in_bytes)/(8*1024.0)/count(0) as decimal(10,4))*100 as FreeSpaceRatio,
 sum(cast(bd.is_modified as int)) as TotalDirtyPages,
 sum(bd.row_count) as TotalRowCounts
from sys.allocation_units au 
inner join sys.dm_os_buffer_descriptors bd
 on au.allocation_unit_id=bd.allocation_unit_id
inner join sys.partitions p 
 on au.container_id=p.hobt_id
inner join sys.indexes i 
 on p.object_id=i.object_id and p.index_id=p.index_id
inner join sys.objects o
 on p.object_id=o.object_id
where bd.database_id=DB_ID(N'database_name')
 and o.type>N'S'
group by bd.database_id,p.object_id,i.name 
order by BufferCounts desc,dbname,ObjectName

4,查看計劃緩存

產生執(zhí)行計劃是十分消耗CPU資源的,SQL Server會在內存的Plan Cache中存儲每個查詢計劃(Query Plan),及其占用的內存空間,重用次數等信息。

select cp.objtype,cp.cacheobjtype,
 sum(cp.size_in_bytes) as TotalSize_B,
 COUNT(cp.bucketid) as CacheCounts,
 sum(cp.refcounts) as TotalRefCounts,
 sum(cp.usecounts) as TotalUseCounts
from sys.dm_exec_cached_plans cp 
group by cp.objtype,cp.cacheobjtype
order by TotalSize_B desc

三,清空緩存

在調優(yōu)存儲過程性能時,清空緩存是必需的,緩沖池(Buffer Pool)是SQL Server的緩存管理器,包含了SQL Server的絕大部分緩存數據(Cache),例如,執(zhí)行計劃緩存(Plan cache),數據緩存(Data cache)等。

清空緩存常用的命令有如下三個:

CHECKPOINT
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

Checkpoint和DBCC DROPCLEANBUFFERS 用于清理數據緩存(Data Cache)中的臟頁(dirty pages)和干凈頁(clean pages),而DBCC FREEPROCCACHE 用于清空所有的計劃緩存(Plan Cache)。

1,清空數據緩存

checkpoint 用于將臟頁(Dirty Pages)寫入硬盤,臟頁(Dirty Pages)是指數據頁讀入緩存后,被修改過,導致內存中數據頁和硬盤中的數據頁中的內容不同;干凈頁(Clean Pages)是指數據頁被讀入緩存后,沒有被修改過,所以,內存中的數據頁和硬盤中的數據頁中的內容相同。不管是Dirty pages 還是 Clean pages 都是Data Cache,在性能調優(yōu)時,都必須從內存中清理掉,否則,查詢性能將忽略掉數據從硬盤加載到內存的IO消耗,影響查詢語句的執(zhí)行情況。

CHECKPOINT 命令用于產生冷緩存(Cold buffer Cache),該命令將當前數據庫產生的所有臟頁寫入到硬盤,并清理內存buffer;在執(zhí)行CHECKPOINT命令之后,執(zhí)行 DBCC DROPCLEANBUFFERS 用于從緩沖池中清空所有的干凈頁。

在性能測試時,使用DBCC DROPCLEANBUFFERS從SQLSERVER的數據緩存池中清除所有的clean緩存數據,需要注意的是該命令只移走干凈的緩存,不移走臟緩存。因此,在執(zhí)行這個命令前,應該先執(zhí)行CheckPoint,將所有臟頁寫入磁盤,這樣在運行DBCC RROPCLEANBUFFERS 時,可以保證所有的數據緩存被清理,而不是其中的一部分。

2,清空計劃緩存

計劃緩存(Plan Cache)用于緩存查詢語句的執(zhí)行計劃,每一條查詢語句在執(zhí)行之后,其查詢計劃都會緩存Plan Cache中。在產品環(huán)境中,不要輕易清理掉Plan Cache。如果檢測到某個Plan Cache產生參數嗅探問題,導致性能十分低下,推薦修改查詢語句,重新編譯存儲過程,以單獨刷新該SP的計劃緩存。

DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle} ) ]

計劃緩存,之前叫做過程緩存(procedure cache),執(zhí)行DBCC FREEPROCCACHE 命令,釋放所有的計劃緩存,這回導致存儲過程,AdHoc 查詢等查詢必須重新編譯,產生新的計劃緩存。

四,強制重新編譯執(zhí)行計劃

修改存儲過程,觸發(fā)器等模塊(Module)能夠使其執(zhí)行計劃重新編譯,除此之外,還有其他方法,能夠強制重新編譯執(zhí)行計劃

1,標記,下次重新編譯

使用該存儲過程,標記一個執(zhí)行模塊(SP,Trigger,User-Defined Function)在下次執(zhí)行時,重新編譯執(zhí)行計劃

sys.sp_recompile [ @objname = ] 'object'

2,不復用執(zhí)行計劃

在創(chuàng)建存儲過程時,使用WITH RECOMPILE 選項,在每次執(zhí)行SP時,都重新編譯,使用新的執(zhí)行計劃。

CREATE PROCEDURE dbo.usp_procname 
 @Parameter_Name varchar(30) = 'Parameter_default_value'
WITH RECOMPILE

3,執(zhí)行時重新編譯

在執(zhí)行存儲過程時,重新編譯存儲過程的執(zhí)行計劃

exec dbo.usp_procname @Parameter_name='Parameter_value' 
WITH RECOMPILE

4,語句級別的重新編譯

在SP中,使用查詢選項 option(recompile),只重新編譯該語句級別的執(zhí)行計劃

select column_name_list
from dbo.tablename
option(recompile)

SQL Server在執(zhí)行查詢之后,查詢提示(RECOMPILE)指示存儲引擎將計劃緩存拋棄,在下次執(zhí)行存儲過程時,強制查詢優(yōu)化器重新編譯,生成新的執(zhí)行計劃。在重新編譯時,SQL Server 優(yōu)化器使用當前的變量值生成新的計劃緩存。

附:

冷緩存,熱緩存,臟緩存和干凈緩存名詞解釋:

  • 凈緩存頁(Clean Buffer) 是指內存中未被修改的數據頁,DBCC DROPCLEANBUFFERS 用于從緩沖池(Buffer Pool)移除干凈頁,釋放Buffer。
  • 臟緩存頁(Dirty Buffer)是指數據頁在內存中被修改,但是還沒有寫入到硬盤中,導致硬盤中的數據不同于內存,通常情況下,臟頁通過CHECKPOINT進程來自動同步,CHECKPOINT 將臟頁數據寫入到硬盤中,使內存和硬盤文件中的數據保持一致,能夠減少數據還原的時間。
  • 冷緩存頁(Cold Buffer)是指,在數據處理階段,最近沒有被使用的緩存頁。
  • 熱緩存頁(Hot Buffer)是指,在數據處理階段,最近經常被使用的緩存頁。

參考文檔:

Recompile a Stored Procedure

What is a COLD, DIRTY or CLEAN Buffer

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

您可能感興趣的文章:
  • sqlserver性能調優(yōu)經驗總結
  • SQL Server 性能調優(yōu)之查詢從20秒至2秒的處理方法
  • sql server性能調優(yōu) I/O開銷的深入解析

標簽:池州 濱州 新鄉(xiāng) 大同 黃山 來賓 文山 東營

巨人網絡通訊聲明:本文標題《SQL Server性能調優(yōu)之緩存》,本文關鍵詞  SQL,Server,性能,調優(yōu),之,緩存,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server性能調優(yōu)之緩存》相關的同類信息!
  • 本頁收集關于SQL Server性能調優(yōu)之緩存的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    狠狠久久亚洲欧美| 99久久夜色精品国产网站| 成人免费一区二区三区视频| 久久久精品国产免费观看同学| 日韩一级在线观看| 精品伦理精品一区| 日韩欧美www| 久久女同性恋中文字幕| 久久亚洲二区三区| 国产免费成人在线视频| 国产精品久久久久久久久免费相片| 欧美激情中文不卡| 国产精品久久久久天堂| 中文字幕制服丝袜成人av| 成人免费在线观看入口| 亚洲影院免费观看| 天堂久久一区二区三区| 久久国内精品视频| 成人三级伦理片| 色婷婷精品久久二区二区蜜臀av| 在线精品观看国产| 日韩欧美中文字幕制服| 日本一区二区三区四区| 国产精品国产三级国产aⅴ中文| 亚洲男同1069视频| 奇米综合一区二区三区精品视频| 国产美女一区二区三区| 日本精品视频一区二区三区| 日韩一区二区麻豆国产| 国产精品久久毛片| 午夜精品久久久久久久久久| 韩国v欧美v日本v亚洲v| 欧美中文字幕一二三区视频| 精品久久国产97色综合| 1000部国产精品成人观看| 日韩在线观看一区二区| 99久久伊人久久99| 欧美xxxxxxxx| 亚洲高清视频的网址| 国产一区亚洲一区| 欧美羞羞免费网站| 中文乱码免费一区二区| 丝袜亚洲另类丝袜在线| 高清在线观看日韩| 制服丝袜国产精品| ㊣最新国产の精品bt伙计久久| 欧美aaaaaa午夜精品| 91免费视频网| 欧美精品一区二区三区蜜桃视频 | 午夜欧美大尺度福利影院在线看| 精品亚洲欧美一区| 69精品人人人人| 一级日本不卡的影视| 成人视屏免费看| 久久久夜色精品亚洲| 偷拍亚洲欧洲综合| 欧美日韩精品三区| 最近日韩中文字幕| www.成人网.com| 国产肉丝袜一区二区| 六月婷婷色综合| 欧美无砖专区一中文字| 自拍视频在线观看一区二区| 国产99久久久国产精品| 欧美成人精精品一区二区频| 日本女优在线视频一区二区| 欧美自拍丝袜亚洲| 亚洲电影一区二区三区| 色婷婷激情久久| 亚洲欧美色综合| 91理论电影在线观看| 中文字幕一区视频| 色域天天综合网| 亚洲男人电影天堂| 在线视频观看一区| 天天操天天综合网| 日韩欧美国产综合| 久久国产剧场电影| 久久九九国产精品| 国产电影精品久久禁18| 国产目拍亚洲精品99久久精品 | 日韩理论电影院| 成人精品gif动图一区| 国产精品国产精品国产专区不片| 成人av免费在线观看| 国产精品色眯眯| 波多野结衣视频一区| 洋洋成人永久网站入口| 欧美日本国产一区| 日韩精品电影在线| 久久免费电影网| 91视视频在线观看入口直接观看www | 亚洲国产人成综合网站| 91麻豆精品国产无毒不卡在线观看 | 国产欧美一区二区精品忘忧草 | 欧美色综合久久| 日韩电影在线免费看| 欧美videofree性高清杂交| 国产精品综合一区二区三区| 中文字幕一区二区三区四区不卡| 欧美视频一区二区三区四区| 精品中文av资源站在线观看| 中文字幕一区二区三区在线观看 | 日本一区二区电影| 欧美在线观看视频在线| 韩国成人在线视频| 一区二区三区高清| 日韩精品中午字幕| 91看片淫黄大片一级在线观看| 日韩精品乱码免费| 国产精品日韩成人| 91精品在线免费| 成人av电影在线观看| 视频一区免费在线观看| 国产精品女人毛片| 欧美高清视频不卡网| 99久久婷婷国产精品综合| 日本三级韩国三级欧美三级| 亚洲色图一区二区| 欧美电影免费观看高清完整版在线观看 | 7777精品伊人久久久大香线蕉最新版 | 精品免费日韩av| 欧美亚一区二区| 成人动漫一区二区三区| 久久精品国产亚洲高清剧情介绍 | 久久精品理论片| 一区二区三区不卡视频在线观看| 精品国产电影一区二区| 欧美男男青年gay1069videost| 成人午夜电影网站| 激情五月激情综合网| 午夜日韩在线观看| 亚洲黄色尤物视频| 国产农村妇女毛片精品久久麻豆| 日韩视频免费观看高清完整版| 欧美在线影院一区二区| 99re热这里只有精品视频| 狠狠色狠狠色综合系列| 三级欧美在线一区| 亚洲国产视频一区| 亚洲国产精品久久久男人的天堂| 亚洲欧美视频在线观看视频| 国产精品麻豆99久久久久久| 久久综合九色综合97婷婷女人| 日韩网站在线看片你懂的| 欧美日韩免费电影| 91福利国产成人精品照片| 色网站国产精品| 欧美影视一区二区三区| 欧美优质美女网站| 欧美视频第二页| 欧美日韩大陆一区二区| 欧美疯狂性受xxxxx喷水图片| 欧美女孩性生活视频| 884aa四虎影成人精品一区| 精品污污网站免费看| 9191精品国产综合久久久久久 | 成人影视亚洲图片在线| 不卡的av网站| 在线观看免费视频综合| 欧美日韩成人激情| 日韩一区二区电影在线| 久久久久久97三级| 亚洲欧洲日韩av| 一区二区在线电影| 亚洲一区二区三区四区五区黄| 亚洲高清视频中文字幕| 久久国产人妖系列| 国产福利一区在线| 在线视频综合导航| 日韩一区二区精品| 欧美激情一区二区| 亚洲一级电影视频| 老司机精品视频在线| 国产成人免费9x9x人网站视频| 色婷婷综合久久久久中文| 制服丝袜一区二区三区| 欧美国产日产图区| 天堂av在线一区| 成人综合在线观看| 欧美日韩另类国产亚洲欧美一级| 7777精品伊人久久久大香线蕉超级流畅| 欧美电影免费提供在线观看| 中文字幕欧美激情一区| 亚洲国产日日夜夜| 国产激情偷乱视频一区二区三区| 在线精品视频一区二区三四| 久久综合成人精品亚洲另类欧美| 亚洲精品久久嫩草网站秘色| 久久99久久精品欧美| 色嗨嗨av一区二区三区| 精品国产99国产精品| 一区二区成人在线视频| 成人中文字幕电影| 制服丝袜中文字幕亚洲| 亚洲免费在线播放| 国产福利一区二区三区| 欧美男同性恋视频网站| 亚洲精品v日韩精品| 国模少妇一区二区三区|