SQL Server 環形緩衝區(Ring Buffer) -- RING_BUFFER_MEMORY_BROKER 診斷內部記憶體壓力

來源:互聯網
上載者:User

標籤:環形緩衝區   緩衝區   ringbuffer   memory   

SQL Server 環形緩衝區(Ring Buffer) -- RING_BUFFER_MEMORY_BROKER 診斷內部記憶體壓力
記憶體Broker


記憶體Broker的職責是根據其需求在大記憶體消費者之間分配記憶體。記憶體Broker是一種SQLOS的組件,但是與緩衝池緊密結合。此外,記憶體Broker只會將緩衝池的記憶體管理器所控制的記憶體考慮在內。記憶體Broker會監視緩衝池的記憶體需求,以及由大記憶體消費者所消費的記憶體。基於所收集的資訊,它會估計每個消費者的"最佳化"記憶體分布,並將此資訊廣播給消費者。每個消費者會相應地使用此資訊來適應其記憶體使用量。

 

SQL Server 2005擁有4種主要的記憶體消費者:緩衝池的資料緩衝、查詢執行引擎(有時被稱為工作台記憶體,workspace memory)、緩衝以及編譯引擎。在SQL Server 2005中,只有後3者會被記憶體Broker監視到。

 

使用者可以通過查詢記憶體Broker的環形緩衝,來監視記憶體Broker當前的、預計的以及推薦的記憶體分布。

 

select * from sys.dm_os_ring_bufferwherering_buffer_type = ‘RING_BUFFER_MEMORY_BROKER‘

 

注意,記憶體Broker的環形緩衝只在記憶體Broker希望某個特定組件的行為發生變化(如收縮、增長或者保持穩定)時才會被更新。


使用者可以使用dbcc memorystatus來找到最後一個記憶體Broker的通知。

 


內部記憶體壓力


當監測到內部記憶體壓力時,為組件在緩衝池分配記憶體的低記憶體通知將被開啟。開啟低記憶體通知允許從使用緩衝池的快取和其他組件中回收頁面。

 

內部記憶體壓力可以通過調整max server memory選項或當stolen頁面與緩衝池的比例超過80%時觸發。

 

內部記憶體壓力通知(‘Shrink’)能通過使用下列代碼查詢ring buffer的調用來發現。

 

selectx.value(‘(//Record/@time)[1]‘, ‘bigint‘) as [Time Stamp],x.value(‘(//Notification)[1]‘, ‘varchar(100)‘) as [Last Notification]from(select cast(record as xml)from sys.dm_os_ring_bufferswhere ring_buffer_type = ‘RING_BUFFER_MEMORY_BROKER‘) as R(x)order by[Time Stamp] desc

 

650) this.width=650;" title="clip_image001" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;" alt="clip_image001" src="http://s3.51cto.com/wyfs02/M01/54/1E/wKiom1R4QbSzOEEVAAN3QhNCT80971.jpg" height="215" border="0" />

 

以下為常用指令碼:

 

/*RING_BUFFER_MEMORY_BROKER  Identity internal memory pressure.       Look at the 3 consumers of Memory     for SHRINK Notification          1.cache          2.query compilations          3.query executions      */select          CAST(record AS XML)          ,CAST(record AS XML).value(‘/Record[1]/@time[1]‘,‘bigint‘) as time          ,CAST(record as XML).value(‘/Record[1]/MemoryBroker[1]/Broker[1]‘,‘varchar(50)‘) as Broker          ,CAST(record as XML).value(‘/Record[1]/MemoryBroker[1]/Notification[1]‘,‘varchar(20)‘) as Notification          ,CAST(record as XML).value(‘/Record[1]/MemoryBroker[1]/MemoryRatio[1]‘,‘int‘) as MemoryRatio      from     sys.dm_os_ring_buffers     where           ring_buffer_type = ‘RING_BUFFER_Memory_broker‘       order by            CAST(record as XML).value(‘/Record[1]/MemoryBroker[1]/Broker[1]‘,‘varchar(50)‘) asc,            CAST(record as XML).value(‘/Record[1]/MemoryBroker[1]/Notification[1]‘,‘varchar(20)‘) asc


本文出自 “滴水石穿” 部落格,請務必保留此出處http://ultrasql.blog.51cto.com/9591438/1584257

SQL Server 環形緩衝區(Ring Buffer) -- RING_BUFFER_MEMORY_BROKER 診斷內部記憶體壓力

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.