在同步提交模式下使用只读副本,查询是否有可能在辅助服务器上获得与主服务器不同的结果?
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 主题。
我正在使用一个带有主服务器和辅助副本的简单可用性组。它们的配置如下:
在某些情况下,我会使用这样的查询将一行插入到主数据库的 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 主题。