我正在疯狂地试图理解sys.dm_hadr_database_replica_states系统表中不同时间列的含义。
我们有一个始终位于可用性组上的三个节点,其中两个节点是同步的,一个是异步的。我们希望使用异步节点进行报告,并希望找到一种精确的方法来计算主副本和异步副本之间的延迟。
下面是查询的快照:
select synchronization_state_desc,
is_primary_replica,
last_sent_time,
last_received_time,
last_hardened_time,
last_redone_time,
last_commit_time
from sys.dm_hadr_database_replica_states DRS
where database_id = db_id('DBname')
问题的范围
如果我需要找到数据出现在异步节点上所需的实际延迟,那么我应该使用哪些列?
发布于 2018-08-13 09:39:14
首先,这里是Microsoft页面
顺便提一下,我建议您阅读一下可用性组的机制,纯粹是为了让您理解我的答案。(Microsoft页面)
至于您的问题的答案,就像RDBMS周围的问题一样,这取决于。
在这种情况下,取决于您所说的"...for数据显示“是什么意思。
让我们来看看你问题中的专栏:
还值得注意的是,您所指的系统DMV位于数据库级别。
此时间指示主服务器最后一次向可用的次要文件发送日志块的时间。这是数据同步过程的开始。
这表示辅助程序最后一次接收日志块的时间。
这表示第二次将接收到的日志块数据缓存到磁盘上的上次时间。
这是在目标数据库上重做最后一个LSN的时间。
这是最后一次提交记录被重做并报告给主服务器的时间。
在上面,有不同的数据进入二级系统的入口点.
数据首先在last_received_time上进入服务器内存。
数据首先进入last_hardened_time磁盘上的服务器
数据首先进入last_redone_time上的数据库数据文件
数据首先被提交,并可通过查询(在奇怪的NOLOCK情况之外)在last_commit_time读取
我怀疑你的问题的答案是这四个概念中的后一个。然而,由于数据在次要和主数据之间的传输时间,本专栏中的时间开销很小。然而,在确定数据吞吐量速度的计算中,这可能并不重要。
https://dba.stackexchange.com/questions/214738
复制相似问题