国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
SQL Server內(nèi)存性能分析

內(nèi)存概念:

Working Set = Private Bytes + Shared Memory

Working Set:某個進(jìn)程的地址空間中,存放在物理內(nèi)存的那一部分

Private Bytes:某個進(jìn)程提交的地址空間(Commited Memory)中,非共享的部分

Shared Memory:對多個進(jìn)程可見的內(nèi)存,或存在于多個進(jìn)程的虛擬地址空間。例如如果兩個進(jìn)程使用相同的DLL,只要該DLL代碼裝入內(nèi)存一次,其他所有映射這個DLL的進(jìn)程只要共享這些代碼就可以了

 

Virtual Address Space :2的64次方。Windows會自行決定什么時(shí)候放在Physical Memory,什么時(shí)候放在Paging file

Reserved Memory:應(yīng)用程序會先Reserve一塊內(nèi)存的地址空間

Committed Memory:將Reserve的內(nèi)存頁面正式Commit使用,Commit的頁面會最終轉(zhuǎn)換到Physical Memory中的有效頁面

Memory Leak:一直不斷的Reserve或Commit內(nèi)存資源,即使不再被使用也不會釋放給其他用戶使用

 

Page Fault:訪問一個存放于Viratul Address Space,但不存在于物理內(nèi)存(Working Set)的頁面,就會發(fā)生Page Fault。如果目標(biāo)頁面存放于硬盤(例如Pageing File),則會進(jìn)行硬盤讀寫,稱之為Hard Fault。如果已經(jīng)存在在物理內(nèi)存中,但是還沒有直接放在這個進(jìn)程的Working Set下,則需要Windows重新定向一次,不會帶來硬盤讀寫,稱之為Soft Fault。由于Soft Fault一般不會帶來性能影響,因此一般不使用該計(jì)數(shù)器,而是使用Pages/sec  

Committed Bytes:整個Windwos系統(tǒng)(包括Windows自身及其所有用戶進(jìn)程)使用的內(nèi)存總數(shù),包括Physical Memory和Paging file中的數(shù)據(jù)

Pages/sec:Hard Page Fault每秒鐘需要從磁盤上讀取或?qū)懭氲捻撁鏀?shù)目(包括Windows和所有應(yīng)用進(jìn)程的所有磁盤Paging動作)
Pages/sec = Memory:Pages Input/sec + Pages Output/sec

Page File:%Usage和Page File:%Peak Usage :反映Paging File使用量的多少。數(shù)據(jù)在Paging File中存的越多,說明Physical Memory和實(shí)際需求量差距越大,性能越差 

=================================================================================

Windows系統(tǒng)自身內(nèi)存使用情況:
一般情況下在64為機(jī)器上,使用1-2GB左右。如果由于一些硬件驅(qū)動造成了內(nèi)存泄露,則Windows可能會占用到幾GB甚至更多的內(nèi)存。

系統(tǒng)的Working Set,也就是系統(tǒng)使用的物理內(nèi)存量,包括高速緩存、頁交換區(qū)、可調(diào)頁的ntoskrnl.exe、驅(qū)動程序代碼和系統(tǒng)映射圖等

Cache Bytes:系統(tǒng)使用的物理內(nèi)存數(shù)目

Cache Bytes = System Cache Resident Bytes + System Driver Resident Bytes + System Code Resident Bytes + Pool Paged Resident Bytes

Memory:System Cache Resident Bytes(System Cache):系統(tǒng)高速緩存消耗的物理內(nèi)存。高速緩存的主要功能是提高文件讀寫速度(例如讀寫超大文件)

賦予SQL服務(wù)賬號“Lock Pages in Memory”權(quán)限,以便SQL Server可以將自己所申請的內(nèi)存鎖定放在物理內(nèi)存中,企業(yè)版自動啟用該功能。但是NonbufferPool的內(nèi)存不受限制 

SQL Server作為一個用戶態(tài)為主的應(yīng)用程序,還是會受限于核心態(tài)。如果核心態(tài)里發(fā)出內(nèi)存要求,SQL Server就會被迫把自己的內(nèi)存釋放出來。用戶態(tài)永遠(yuǎn)也搶不過核心態(tài)。

  

=================================================================================

檢查某個進(jìn)程的內(nèi)存使用情況:
Process:Working Set

Process:Private Bytes

Process:Virtual Bytes:某個進(jìn)程所申請的Virtual Address Space,包括Reserved Memory和Committed Memory

如果系統(tǒng)內(nèi)存有瓶頸,磁盤一般也會很忙,paging也會較多;但如果磁盤很忙,但是paging不高,就不能說明系統(tǒng)內(nèi)存有瓶頸

 

=================================================================================

SQL Server內(nèi)存:
Traget Server Memory:SQL Server在理論上能夠使用的最多的內(nèi)存量。如果在SQL Server中設(shè)置了 Max Server Memory,則會使用該值作為內(nèi)存上限

Total Server Memory:SQL Server自己分的代碼申請的Buffer Pool空間大小,所有的Database Cache和大部分的Consumer(Connection、Query Plan、
Optimizer等)都保存在Buffer Pool中,對于一些特別長的語句的Query Plan、Optimizer等內(nèi)存使用一部分的Multi-Page

Buffer Pool = Max Server Memory 或 SQL physical memory-Multi-page

Max Server Memory是Buffer Pool的上限,但不是SQL Server所有內(nèi)存使用的上限。SQL Server內(nèi)存的使用包括Buffer Pool和MemToLeave,所以SQL Server實(shí)際內(nèi)存使用量一定大于Max Server Memory。但在正常情況下,MemToLeave的使用會遠(yuǎn)小于Buffer Pool,控制好Buffer Pool,基本上就控制住了SQL Server的整體內(nèi)存使用量。 
 
Traget Server Memory和Total Server Memory都是指邏輯上的內(nèi)存空間大小,而不是物理內(nèi)存空間大小。數(shù)據(jù)是存放在page file還是物理內(nèi)存中是由Windows決定的。 

SQL Server內(nèi)存使用分類:

按申請方式分類:

對Database Cache,會先Reserve,再Commit。其他的所有內(nèi)存使用,基本都是直接Commit,都是Stolen(Memory Leak)


按申請大小分類:

對于所有小于或等于8KB的,直接分配給一個頁面:8KB。所有這些頁面都集中管理,這塊內(nèi)存被稱為Buffer Pool,一次一個頁面的分配被稱為Single page Allocation  

對于大于8KB的內(nèi)存申請,會被集中在另外一個區(qū)域,成為Multi-Page(或MemToLeave),這種分配稱為Multipl Page Allocation

 


SQL Server性能計(jì)數(shù)器使用:

Memory Manager:監(jiān)視服務(wù)器內(nèi)存總體使用情況

Ttotal Server Memory(KB)

Traget Server Memory(KB)
Optimizer Memory(KB):服務(wù)器正在用于查詢優(yōu)化的動態(tài)內(nèi)存總數(shù)

SQL Cache Memory(KB):服務(wù)器正在用于動態(tài)SQL Server高速緩存的動態(tài)內(nèi)存總數(shù)

Lock Memory(KB):服務(wù)器用于鎖的動態(tài)內(nèi)存總量

Connection Memory(KB):服務(wù)器正在用來維護(hù)連接的動態(tài)內(nèi)存總量

Granted Workspace Memory(KB):當(dāng)前給予執(zhí)行哈希、排序、大容量復(fù)制和索引創(chuàng)建等操作進(jìn)程的內(nèi)存總量

Memory Grants Pending:等待工作空間內(nèi)授權(quán)的進(jìn)程總數(shù)。如果該值不等于0,就說明當(dāng)前有一個用戶的內(nèi)存申請由于內(nèi)存壓力而被延遲。一般來講,這就意味著有比較嚴(yán)重的內(nèi)存瓶頸 

 

Buffer Manager:用于監(jiān)視內(nèi)存如何使用

Buffer Cache Hit Ratio:在緩沖區(qū)高速緩存中找到而不需要從磁盤中讀取的頁的百分比。經(jīng)過很長時(shí)間后,該比率的變化應(yīng)該很小,基本應(yīng)該在99%以上。如果小于95%,通常就有了內(nèi)存不足的問題??梢酝ㄟ^增加SQL Server的可用內(nèi)存來提高

Database Pages:緩沖池中有數(shù)據(jù)庫內(nèi)容的頁數(shù)。也就是所謂的Database Cache的大小

Free pages:所有空閑可用的總頁數(shù)。當(dāng)這個值降低是就說明SQL Server正在分配內(nèi)存給一些用戶。當(dāng)這個值下降到比較低的值時(shí)(例如只剩幾百個page了),SQL Server就會開始做Lazy Write,把一些內(nèi)存讓出來,所以該值一般不會為0.但如果該值反復(fù)降低,就說明內(nèi)存存在瓶頸。一個沒有內(nèi)存瓶頸的SQL Server的Free Pages會維持在一個穩(wěn)定的值 
 
Lazy writes/sec:每秒被緩沖區(qū)管理器的Lazy writer寫入的緩沖區(qū)數(shù)。Lazy writer是一個系統(tǒng)進(jìn)程,用于呈批刷新臟的老化的緩沖區(qū)(包括更改的緩沖區(qū),必須將這些更改寫回磁盤,才能將緩沖區(qū)重用于其他頁),并使他們可用于用戶進(jìn)程。當(dāng)SQL Server感覺到內(nèi)存壓力時(shí),就會將最久沒有被重用到的數(shù)據(jù)頁和執(zhí)行計(jì)劃清理出內(nèi)存。這些數(shù)據(jù)頁和執(zhí)行計(jì)劃,就被稱為“老化的緩沖區(qū)”,這個清理動作就是由Lazy writer完成的。所以如果SQL Server內(nèi)存壓力不大,Lazy writer就不會被經(jīng)常觸發(fā)。如果被經(jīng)常觸發(fā),就應(yīng)該是有內(nèi)存瓶頸 
  
Page life expentancy:頁若不被引用,將在緩沖池中停留的秒數(shù)。如果SQL Server沒有新的內(nèi)存需求,或者有空余的空間來完成新的內(nèi)存需求,那么Lazy writer就不會被觸發(fā),頁面會一直放在緩沖池中,Page life expentancy就會維持在一個較高的值。如果SQL Server出現(xiàn)了內(nèi)存壓力,Lazy writer就會被觸發(fā),Page life expentancy也會突然下降。所以如果Page life expentancy總是高高低低,SQL Server應(yīng)該就出現(xiàn)了內(nèi)存瓶頸 
 
Page reads/sec:每秒發(fā)出的物理數(shù)據(jù)庫頁讀取數(shù)。此統(tǒng)計(jì)信息顯示的是所有數(shù)據(jù)庫間的物理頁讀取總數(shù)。如果用戶訪問的數(shù)據(jù)都緩存在了內(nèi)存里,那么SQL Server就不需要從磁盤讀取頁面,不許需要做任何的Page reads。當(dāng)SQL Server需要讀取這些頁面時(shí),必須要為他們騰出內(nèi)存空間。所以當(dāng)Page reads/sec高時(shí),一般Page life expentancy會下降,Lazy writes/sec會上升 
由于物理I/O開銷大,Page Reads動作一定會影響SQL Server性能,可以通過使用更大的數(shù)據(jù)緩存、智能索引、更有效的查詢或更改數(shù)據(jù)庫設(shè)計(jì)等方法降低Page Reads

Page writes/sec:每秒執(zhí)行的物理數(shù)據(jù)庫頁寫入數(shù)。該值和內(nèi)存使用沒有什么關(guān)系,和Checkpoint pages/sec一樣,更用戶的修改量有關(guān)

Checkpoint pages/sec:由要求刷新所有臟頁的檢查點(diǎn)或其他操作每秒刷新到磁盤的頁數(shù)。該值和內(nèi)存壓力沒有直接關(guān)系,和用戶行為有關(guān)。如果用戶操作主要是讀,Checkpoint值就比較小。如果很多操作都是Insert/Update/Delete,name內(nèi)存中修改過的數(shù)據(jù)臟頁就會比較多,每次Checkpoint的量也會較大。主要用來分析磁盤I/O  

Stolen Pages:用于非Database Pages(包括執(zhí)行計(jì)劃緩存)的頁數(shù)。這里就是Stolen Memory在Buffer Pool里的大小

Target Pages:緩沖池中理想的頁數(shù),乘以8KB,就應(yīng)該是Target Server Memory的值

Total Pages:緩沖池中的頁數(shù)(包括數(shù)據(jù)庫頁、可用頁和Stolen頁)乘以8KB,就應(yīng)該還是Total Server Memory的值

 

SQL性能分析步驟:

1)當(dāng)內(nèi)存出現(xiàn)瓶頸時(shí),會出現(xiàn)大量的paging動作,磁盤也就會很繁忙。所以要先解決內(nèi)存瓶頸,才能降低I/O

2)分析磁盤性能是否正常,讀/寫是否已達(dá)到預(yù)期值,是讀還是寫繁忙

3)查看引起高I/O的操作類型(Page Reads、Page Writes、Lazy Writes、Checkpoints、Log Writes等)

 

動態(tài)性能視圖:
select * from sys.sysprocesses

select * from sys.dm_os_wait_stats

select *from sys.dm_exec_requests

 

=================================

計(jì)數(shù)器(2分鐘):

Processor\% Privileged Time
Processor\% Processor Time
Memory\Available Mytes
PhysicalDisk\Avg. Disk sec/Read
PhysicalDisk\ Avg. Disk sec/Write
SQLServer:SQL Statistics\Batch Requests/sec
SQLServer:Memory Manager\Target Server Memory (KB)
SQLServer:Memory Manager\Total Server Memory (KB)

Process(w3wp)\Working Set
Process(w3wp)\Private Bytes

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
第四章——SQLServer2008-2012資源及性能監(jiān)控(3)分類:數(shù)據(jù)庫管理SQLServer2012cookbookDBA
內(nèi)存問題定位與解決
對oracle實(shí)例的內(nèi)存(SGA和PGA)進(jìn)行調(diào)整,優(yōu)化數(shù)據(jù)庫性
SQL SERVER 內(nèi)存分配及常見內(nèi)存問題 簡介
深入SQL SERVER 2000的內(nèi)存管理機(jī)制(三)
淺談SQL Server 對于內(nèi)存的管理
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服