在同步提交模式下使用只读副本,查询是否有可能在辅助服务器上获得与主服务器不同的结果?

Using a read-only replica in synchronous commit mode, is it possible for a query to get different results on the secondary than the primary?

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

在某些情况下,我会使用这样的查询将一行插入到主数据库的 Table A 中:

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

然后我立即使用只读连接从 TableA 中查询值。

SELECT Column1
FROM TableA
WHERE UniqueId = 123

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

这是怎么回事?

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

有关详细信息,请参阅文档中的 Data Latency 主题。