標籤:緩衝區 alwayson ringbuffer 環形緩衝區
SQL Server 環形緩衝區(Ring Buffer) -- 環形緩衝在AlwaysOn的應用
可以從SQL Server環形緩衝區得到一些診斷AlwaysOn的資訊,或從sys.dm_os_ring_buffers動態管理檢視。環形緩衝在SQL Server啟動的時候建立,在SQL Server系統內記錄警示用於內部診斷。它們不被支援,但你仍能從中擷取有用的資訊。下面的查詢能從AlwaysON環形緩衝擷取所有的事件記錄。
SELECT * FROM sys.dm_os_ring_buffers WHERE ring_buffer_type LIKE ‘%HADR%‘
為了讓資料更好管理,通過日期和環形緩衝類型來過濾資料。下面的查詢擷取今天特定的環形緩衝中的記錄。
DECLARE @runtime datetimeSET @runtime = GETDATE()SELECT CONVERT (varchar(30), @runtime, 121) as data_collection_runtime,DATEADD (ms, -1 * (inf.ms_ticks - ring.[timestamp]), GETDATE()) AS ring_buffer_record_time,ring.[timestamp] AS record_timestamp, inf.ms_ticks AS cur_timestamp, ring.*FROM sys.dm_os_ring_buffers ringCROSS JOIN sys.dm_os_sys_info inf where ring_buffer_type=‘<RING_BUFFER_TYPE>‘
在每行的Record列包含XML格式的診斷資訊。XML資料區分不同的環形緩衝類型。對於每一個環形緩衝類型,可以參考下文。為了讓XML資料更具可讀性,你需要修改T-SQL查詢抽取需要的XML元素。例如,下面的查詢從RING_BUFFER_HADRDBMGR_API環形緩衝類型擷取事件,並格式化XML資料到單獨的表列。
WITH hadr(ts, type, record) AS(SELECT timestamp AS ts, ring_buffer_type AS type, CAST(record AS XML) AS recordFROM sys.dm_os_ring_buffers WHERE ring_buffer_type = ‘RING_BUFFER_HADRDBMGR_API‘)SELECTts,type,record.value(‘(./Record/@id)[1]‘,‘bigint‘) AS [Record ID],record.value(‘(./Record/@time)[1]‘,‘bigint‘) AS [Time],record.value(‘(./Record/HadrDbMgrAPI/dbId)[1]‘, ‘bigint‘) AS [DBID],record.value(‘(/Record/HadrDbMgrAPI/API)[1]‘, ‘varchar(50)‘) AS [API],record.value(‘(/Record/HadrDbMgrAPI/Action)[1]‘, ‘varchar(50)‘) AS [Action],record.value(‘(/Record/HadrDbMgrAPI/role)[1]‘, ‘int‘) AS [Role],record.value(‘(/Record/Stack)[1]‘, ‘varchar(100)‘) AS [Call Stack]FROM hadrORDER BY record.value(‘(./Record/@time)[1]‘,‘bigint‘) DESCGO
AlwaysOn環形緩衝類型
有4種類型的環形緩衝在sys.dm_os_ring_buffers裡:
RING_BUFFER_HADRDBMGR_API – 記錄已經發生或者正在發生的狀態變化。當關注狀態變化時,集中注意objectType的值。
RING_BUFFER_HADRDBMGR_STATE – 記錄AlwaysOn活動的內部方法和函數調用。可以從中看到例如suspend、resume或role changes,包括所有的入口和出口。
RING_BUFFER_HADRDBMGR_COMMIT
RING_BUFFER_HADR_TRANSPORT_STATE
本文出自 “滴水石穿” 部落格,請務必保留此出處http://ultrasql.blog.51cto.com/9591438/1583956
SQL Server 環形緩衝區(Ring Buffer) -- 環形緩衝在AlwaysOn的應用