连接到 Always On 可用性组的只读实例

Posted

技术标签:

【中文标题】连接到 Always On 可用性组的只读实例【英文标题】:Connecting to read only instance of Always On availability group 【发布时间】:2016-01-04 13:38:27 【问题描述】:

早安,

我有一个关于从可用性组的只读实例中读取的性能相关问题。

据我了解(抱歉,我对 Always On(AO) 不是很了解)您可以通过两种方式连接到只读实例:

方法 1:通过将应用意图指定为只读,直接连接到已正确设置只读路由的 AO 可用性组。

方法二:直接连接只读实例。

我想知道,如果您不断地查询数据库(每分钟左右),或者这不会产生任何影响,哪些对服务器的负担会更小。

【问题讨论】:

【参考方案1】:

这两种方法之间的差异不大,尽管直接连接可能会稍微快一些,因为在连接到可用性组时必须执行一些额外的逻辑,例如查找只读路由。但是,最佳实践是连接到 AO 可用性组,因为它抽象了实现细节。如果有多个只读副本,它可以实现负载平衡,并且便于维护,因为 DBA 可以更改只读路由而无需更新任何连接字符串。

关于您的第二条评论,根据MSDN,在连接到可用性组时,可用性组的主数据库会处理传入的只读路由请求并尝试查找加入的在线只读副本到主副本并配置为只读路由。客户端从主副本服务器接收回连接信息并连接到识别的只读副本。所以简而言之,在重新路由后,您会连接到辅助服务器,因此在使用只读应用程序意图时连接到可用性组没有区别,因为您最终会获得相同的连接。

【讨论】:

我读到了一些关于使用隔离的只读(辅助副本)服务器,当您从中读取时,这在直接连接以及使用应用程序意图时是否正确? 我已经更新了我的答案,因为这里评论太长了。

以上是关于连接到 Always On 可用性组的只读实例的主要内容,如果未能解决你的问题,请参考以下文章

什么是 Always On 可用性组

Always on 添加可用性组失败

SQLServer 2012 Always on配置全过程

SQL Server Always On 可用性组卡在“同步/恢复中”

alwayson09-创建always on高可用性组

此版本不支持 Always On 高可用性连接命令