首页 > 解决方案 > 在同步提交模式下使用只读副本,查询是否有可能在辅助节点上获得与主节点不同的结果?

问题描述

我正在使用具有主服务器和辅助副本的简单可用性组。它们的配置如下:

在此处输入图像描述

在某些情况下,我将使用如下查询将一行插入到主表 A 中:

INSERT INTO TableA(UniqueId, Column1)
SELECT 123, Column2
FROM @TVP

之后,我立即使用只读连接查询 TableA 中的值。

SELECT Column1
FROM TableA
WHERE UniqueId = 123

有时在进行此查询时,我们不会返回任何行。我认为这是因为只读副本尚未从主副本获取数据,但我认为插入查询不会返回,直到数据被硬化到辅助副本。

这里发生了什么?

标签: sql-serverhigh-availability

解决方案


使用同步 AG 副本,当INSERT事务提交时,主节点和辅助节点上的提交都会得到加强。但是,在辅助节点上的重做线程应用更改之前,这些更改不会在辅助节点上可见。延迟通常很短,但可能会由于辅助节点上的高资源利用率阻塞而延迟。

有关详细信息,请参阅文档中的数据延迟主题。


推荐阅读