Always On 可用性组(AG)不同同步模式对比

news/2025/2/26 18:52:42/文章来源:https://www.cnblogs.com/Jas0n0ss/p/18739365

在 SQL Server 的 Always On 可用性组(AG) 中,主副本(Primary replica)和副本(Secondary replica)之间的同步模式分为 异步同步(Asynchronous commit)同步同步(Synchronous commit) 两种模式。它们对数据一致性的影响及适用的应用场景有所不同。以下是详细的对比:

1. 同步同步模式(Synchronous commit)

  • 定义:在同步同步模式下,主副本和副本之间的数据传输是同步的。即主副本在提交事务之前,必须等待至少一个副本确认已将该事务写入日志并持久化(即事务日志已被写入副本)。一旦副本确认,事务才会提交到主副本。
  • 数据一致性:在这种模式下,主副本和副本之间的数据是一致的,因为在主副本提交事务之前,副本必须确认接收到数据并将其持久化。这意味着在发生故障切换时,新的主副本不会丢失任何数据。
  • 延迟:由于需要等待副本确认,可能会出现事务提交延迟,尤其是在网络延迟较高或副本负载较大的情况下。虽然保证了数据一致性,但会牺牲一定的性能。
  • 适用场景
    • 需要高数据一致性的场景,要求在主副本和副本之间确保同步性。
    • 金融、银行等对数据一致性和完整性要求非常高的应用系统。
    • 适用于灾难恢复环境,保证主副本故障时不会丢失数据。
    • 适合低延迟网络环境。

2. 异步同步模式(Asynchronous commit)

  • 定义:在异步同步模式下,主副本和副本之间的数据传输是异步的。即主副本在提交事务时并不等待副本确认,而是立即提交事务并返回成功。这意味着事务日志会先写入主副本,然后异步地传输到副本。
  • 数据一致性:在这种模式下,主副本和副本之间的数据一致性不是绝对保证的。因为事务提交到主副本后,副本可能还未接收到数据。如果在事务传输到副本之前发生故障(如主副本宕机),那么有可能丢失尚未同步到副本的数据。
  • 延迟:由于不需要等待副本的确认,事务的提交速度较快,系统性能更高,适合高负载、对性能要求较高的场景。
  • 适用场景
    • 适用于对性能要求较高的场景,尤其是主副本和副本之间存在较大网络延迟时。
    • 适合不能容忍显著性能下降但可以容忍少量数据丢失的应用场景。
    • 适合某些业务对数据一致性要求不那么严格,容忍一定的数据丢失风险的系统。
    • 适用于异地灾难恢复,尤其是跨区域的高延迟网络环境。

3. 数据一致性对比

  • 同步同步模式(Synchronous commit):数据一致性更强,主副本和副本的数据保持一致,保证在主副本故障时不会丢失任何事务数据。因此,这种模式适用于对数据一致性要求非常高的业务系统。
  • 异步同步模式(Asynchronous commit):副本的数据可能会滞后于主副本,因此可能会有数据丢失的风险,尤其是在发生故障时。这种模式适用于那些对数据一致性要求不那么严格的场景,但需要优化性能和可用性。

4. 故障转移(Failover)

  • 同步同步模式:因为主副本和副本的事务是同步的,因此当发生故障转移时,新的主副本会立即接管工作,且不会丢失任何数据。这种模式适用于对故障转移要求高的业务系统,确保零数据丢失。
  • 异步同步模式:如果主副本发生故障转移,可能会丢失尚未同步到副本的数据。虽然这种模式可以提高系统的可用性,但在发生故障转移时,可能会导致数据丢失,尤其是当副本滞后较多时。

5. 应用场景总结

模式 数据一致性 性能 故障转移 适用场景
同步同步(Synchronous commit) 强一致性,保证无数据丢失 性能可能下降,延迟较高 快速故障转移,零数据丢失 需要高一致性、零数据丢失、低延迟网络环境,如金融、银行等关键业务
异步同步(Asynchronous commit) 一致性较弱,可能丢失数据 高性能,低延迟 故障转移可能导致数据丢失 高性能要求的应用,尤其是跨区域、大网络延迟环境,灾难恢复,或容忍少量数据丢失的系统

6. 总结

  • 同步同步 模式提供了 零数据丢失 的保证,但可能牺牲 性能响应速度,适合对一致性要求极高的系统。
  • 异步同步 模式提供了 较高的性能,但可能会导致 数据丢失,适合对一致性要求不那么严格,且需要高可用性和快速响应的应用场景。

在选择模式时,需要根据具体的业务需求权衡一致性、性能和容忍的风险。例如,对于金融和医疗行业,通常会选择同步同步模式,而对于全球范围内的大规模分布式应用,可能更多采用异步同步模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/890233.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第5章-路由事件

Handler: 处理器 Preview: 预览、这指隧道 Raise: 引发 Bubble: 冒泡 Handled: 已处理理解路由事件 事件路由允许源自某个元素的事件由另一个元素引发。 定义、注册和封装路由事件 public partial class Window1 : Window {// 定义路由事件,必须是 static readonly// 类型 Rou…

mysql 数据目录

前言 简单介绍一下mysql的数据目录。 正文 对于mysql,我们关心的一般是数据部分,那么关心的就是数据目录。 我们查看一下数据目录的位置。 SHOW VARIABLES LIKE datadir看一下数据目录的位置:再对比一下我们数据库的信息:好像除了这个information_schema 好像都有一个目录。 …

三句话生成 P5.js 粒子特效代码,人人都可以做交互式数字艺术

前几天在上海西岸艺术中心的全球开发者先锋大会GDC2025,通义灵码的老朋友-@同济子豪兄受邀参会,并带领大家观看了本届大会两大重磅看点:具身智能人形机器人和 AI 程序员编程写代码。前几天在上海西岸艺术中心的全球开发者先锋大会GDC2025,通义灵码的老朋友-@同济子豪兄受邀…

使用JAVA调用asmx服务,“http://tempuri.org/”有什么作用?

原文链接:https://bbs.csdn.net/topics/392507481 这个是域名 http://tempuri.org/ 是默认的命名空间.如果是web直接引用不需要管,但有时候别人发布改了这个命名,你动态引用就需要改成跟他一样的了.一般情况下有些人发布没改这个,有些注重网站安全的就修改了这个,给你个照片看…

为什么去IOE化的背景下,还有必要学Oracle

很多人都知道有“去IOE化”这个口号,但事实上,有多少人知道是哪一年提出的这个口号吗?有多少人知道去的哪个IOE吗?现在越来越多的国产数据库出现,还有必要学Oracle、考OCP认证吗? 去IOE化 “去IOE化”这个口号早在2008、2009的时候就提出来了,原因是互联网发展需要、成本…

08 梯度消失与梯度爆炸问题

由反向传播原理可知,梯度的计算遵循链式法则。由于网络层数不断加深,梯度的连乘效应可能会导致梯度呈指数形式衰减,又或以指数形式增加。 前者叫做梯度消失,梯度消失导致网络中的早期层几乎不更新,使得网络难以学习到输入数据的有效特征。可能导致网络权重更新非常缓慢,使…

GAMES101 作业三

重要知识点一 布林冯反射模型 漫反射+高光+环境光重要知识点二 通过作业也对空间中的坐标变换认识更清晰了一点,在摄像空间中进行变换是不对的,需要从原来的三维空间进行变换才对,所以会有一个矫正系数 重要知识点三 在计算光线时,要注意计算向量和单位化 不了解的 对于后两…

写一个简单的hexo-tag-plugin:quote

前置教程 [Akilarの糖果屋 - Akilar.top](https://akilar.top/posts/e2bf861f/) 为啥想写一个quote的标签外挂 我最近在写博客的时候,发现好多时候原生的Hexo标签不是很好用,效果如下。 {% tabs Hexo Block Quote, -1 %}没有提供参数,则只输出普通的 blockquote{% blockquot…

搭建DeepSeek-R1平台

前言 大家用到 DeepSeek-R1 时应该会经常出现下面的情况。但凡多问两个问题,不但缓慢,而且容易出现服务器繁忙的问题:今天教大家一种通过API部署的方式,可以体验满血版的DeepSeek-R1,不仅回答快速,而且不会出现服务器繁忙的情况。 注册账号 首先大家要通过下面的方式,先…

No.16 CSS--背景属性

一、CSS常见的背景属性 background-color: aqua; 设置背景颜色background-image: none; 设置背景图片background-position: 0%; 设置背景图片位置background-repeat: no-repeat; 设置背景图片如何重复填充background-size: 0%; …

Mybatis基础06

动态SQL 介绍 什么是动态SQL:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 官网描述: MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,…

Spring5基础01

Spring概述简介Spring : 春天 --->给软件行业带来了春天 2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架。 2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版。 很难想象Rod Johnson的学历 , 他是悉尼大学的博士,然而他的专…