SQL Server 环形缓冲区(Ring Buffer) -- 环形缓冲在AlwaysOn的应用

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 datetime
SET @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 ring
CROSS 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 record
FROM sys.dm_os_ring_buffers WHERE ring_buffer_type = ‘RING_BUFFER_HADRDBMGR_API‘
)
SELECT
ts,
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 hadr
ORDER BY record.value(‘(./Record/@time)[1]‘,‘bigint‘) DESC
GO

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

时间: 2024-10-10 21:32:13

SQL Server 环形缓冲区(Ring Buffer) -- 环形缓冲在AlwaysOn的应用的相关文章

SQL Server 环形缓冲区(Ring Buffer) -- RING_BUFFER_EXCEPTION 跟踪异常

SQL Server 环形缓冲区(Ring Buffer) -- RING_BUFFER_EXCEPTION 跟踪异常 动态管理视图sys.dm_os_ring_buffers使得实时定位问题更加容易.环形缓冲包含大量的在服务器上发生的事件.当前,我正碰到锁请求超时问题.根据SQL Server Profiler跟踪捕获,发现服务器收到大量如下信息: Lock request time out period exceeded. 我们找到了语句并修改,来阻止所请求超时的发生.现在服务器正被监控,我

SQL Server 环形缓冲区(Ring Buffer) -- RING_BUFFER_SECURITY_ERROR 诊断安全相

SQL Server 环形缓冲区(Ring Buffer) -- RING_BUFFER_SECURITY_ERROR 诊断安全相关错误 环形缓冲存储了大量的在过去一段时间段内的安全错误信息,有助于分析SQL Server安全问题. 例如,当你尝试创建一个SQL登录账号,并启用密码策略,但是提供的密码不匹配密码策略.然后,你将会收到一个错误消息说明密码不匹配.这个错误将会存储在环形缓冲区.当你执行下面的查询,你将会导致错误的SPID以及导致失败的API名称.如上面示例描述的,你会找到NetVal

SQL Server 环形缓冲区(Ring Buffer) -- RING_BUFFER_MEMORY_BROKER 诊断内部内存压力

SQL Server 环形缓冲区(Ring Buffer) -- RING_BUFFER_MEMORY_BROKER 诊断内部内存压力 内存Broker 内存Broker的职责是根据其需求在大内存消费者之间分配内存.内存Broker是一种SQLOS的组件,但是与缓冲池紧密结合.此外,内存Broker只会将缓冲池的内存管理器所控制的内存考虑在内.内存Broker会监视缓冲池的内存需求,以及由大内存消费者所消费的内存.基于所收集的信息,它会估计每个消费者的"最优化"内存分布,并将此信息广播

SQL Server 环形缓冲区(Ring Buffer) -- RING_BUFFER_SCHEDULER_MONITOR 获取SQL

SQL Server 环形缓冲区(Ring Buffer) -- RING_BUFFER_SCHEDULER_MONITOR 获取SQL进程的CPU利用率 环形缓冲区存储了有关CPU利用率的信息.这些信息每分钟更新一次.所以你可以跟踪到4小时15分钟内给定时间点的CPU利用率.下面的输出显示了SQL实例的CPU利用率和其他活动进程的CPU利用率.这将帮助我们分析是否SQL Server进程占用大量CPU. 对于SQL Server 2005: declare @ts_now bigint sel

SQL Server 环形缓冲区(Ring Buffer) -- RING BUFFER CONNECTIVITY 的深入理解

SQL Server 环形缓冲区(Ring Buffer) -- RING BUFFER CONNECTIVITY 的深入理解 首先我们从连接的Ring Buffer数据返回的XML来入手. SELECT CAST(record as xml) AS record_data FROM sys.dm_os_ring_buffers WHERE ring_buffer_type= 'RING_BUFFER_CONNECTIVITY' 执行上面的语句,得到下面的结果: 点击XML的超链接,打开文件内容

SQL Server 环形缓冲区(Ring Buffer) -- SQL Server 与Ring Buffer的关系介绍

SQL Server 环形缓冲区(Ring Buffer) -- SQL Server 与Ring Buffer的关系 SQL Server 操作系统(SQLOS)负责管理特定于SQL Server的操作系统资源.其中相关的动态管理试图sys.dm_os_ring_buffers将被标识为仅供参考.不提供支持.不保证以后的兼容性. 先看看记录的不同的Ring Buffer类型. select distinct ring_buffer_type from sys.dm_os_ring_buffer

SQL Server 2014新特性——Buffer Pool扩展

Buffer Pool扩展 Buffer Pool扩展是buffer pool 和非易失的SSD硬盘做连接.以SSD硬盘的特点来提高随机读性能. 缓冲池扩展优点 SQL Server读以随机读为主,SQL Server IO分为2部分:buffer pool管理方式,和buffer pool. SQL Server 从磁盘中读入数据,并且存放在buffer pool中以供读取和修改,修改完之后脏数据还是放在buffer pool中,当内存紧张执行lazy write把脏数据写入磁盘,并且释放内存

SQL Server磁盘I/O性能分析

SQL Server中的I/O操作类型: 1.对于内存中没有缓存的数据,第一次访问时需要将数据从所在的页面从数据文件中读取到内存中 2.在任何Insert/Update/Delete提交前,SQL Server需要保证日志记录能够写入到日志文件中 3.当SQL Server做Checkpoint时,需要将内存缓冲区中已经发生修改的数据页面同步到硬盘的数据文件中,一般一分钟一次Checkpoint.如果修改较多,频率高一些,写的数量 和上次checkpoint依赖发生的数据修改量有直接关系 4.当

SQL Server -&gt;&gt; Memory Allocation Mechanism and Performance Analysis(内存分配机制与性能分析)之 -- Minimum server memory与Maximum server memory

Minimum server memory与Maximum server memory是SQL Server下配置实例级别最大和最小可用内存(注意不等于物理内存)的服务器配置选项.它们是管理SQL Server内存的途径之一. Minimum server memory与Maximum server memory Minimum server memory(MB): 最小服务器内存.一旦超过这个线就不会再把内存换回去.但是也不是说SQL Server一启动马上就申请这么多的内存. Maximum