原文:SQL Server AlwaysOn中的几个误区

AlwaysOn自SQL Server2012之后已经发布很久了,最近我在给一些客户做咨询的时候经常被问起是不是应该使用AlwaysOn,从客户的视角来看仿佛AlwaysOn是一个包治百病的良药,但实际上没有包治百病的良药。因此在此我谈一谈AlwaysOn中的常见误区。

1.AlwaysOn可以实现负载均衡。


答案是否定的,AlwaysOn在特定条件下(需要修改前端应用程序)可以负担只读负载,但负载均衡是无法做到的。在SQL Server中如果希望实现负载均衡可以考虑两个方向,通过复杂的架构以及和修改应用程序来共同实现,可以考虑的方向诸如:

可伸缩共享数据库


该特性允许多个SQL Server实例连接到一个共享的只读存储,从而使得报表服务可以Scale-Out,但只能扩展只读负载,拓扑图如图1所示。

图1.可伸缩共享数据库

对等复制


对等复制允许节点中的每一个点进行更新。但对等复制有比较严格的限制,包括每个节点可更新的数据库范围的考虑、冲突的处理、对网络带宽的要求、对运维人员水平的要求、对丢失数据方面的考虑等,典型拓扑图如图2所示。

图2.对等复制拓扑

分布式视图


简单理解,分布式视图就是将数据分布到多个节点,通过视图将这些数据汇总起来。这种方案需要对程序做大量修改,比较麻烦。

SQL Server Service Borker(SSB)


说到这个方案,我曾经因为这个方案吃过不少苦头。该方案实施起来过于复杂,并且需要应用程序端针对做大量修改,经常掉消息。没有专业的DBA来看就是自寻死路。

考虑第三方方案


SQL Server一直没有原生的负载均衡方案,如果自己没有很强大的实力或是使用的是第三方厂商提供的产品无法修改代码,可以考虑第三方方案,国内我知道一家公司,格瑞趋势(http://www.grqsh.com/)专门做SQL Server上的负载均衡的方案。我在微软举办的一次活动中和他们的数据库咨询顾问交流过,水平还不错。

2.AlwaysOn是一个Share-Nothing方案


只说对了一半。实际上,AlwaysOn中包含两种方案,AlwaysOnFailover Cluster Instance可以看作之前SQL Server故障转移集群的升级版本,升级的部分包括更灵活的故障转移策略、可以将TempDB放到本地存储等特性。该方式是共享磁盘的解决方案。

另一部分是AlwaysOnAvailability Group是Share-Nothing的方案,可以看作之前镜像的升级版本,只是副本可以同时存在4个(SQL Server 2014中是8个)并且允许只读。

3.AlwaysOn是以一组数据库为粒度,则可以执行针对改组数据库的跨库事务


不允许。虽然可用性组是以多个库为粒度,但不允许事务中更新的数据涉及到AlwaysOn中的多个库。

4.AlwaysOn中的每个节点都必须在物理机上


错误,实际上,AlwaysOn的WSFC也可以在虚拟环境中。

5.AlwaysOn可用性组的性能会比镜像高很多


这也同样是一个常见的误区,或许和微软对AlwaysOn的宣传有关,我咨询过的一些客户都受到过微软号称AlwaysOn包治百病,但实际上AlwaysOn是基于镜像,如果您的网络或IO性能存在问题,那么即使使用了AlwaysOn可用性组性能也会存在问题。

SQL Server AlwaysOn中的几个误区的更多相关文章

  1. SQL Server 2012中的AlwaysOn尝试

      简介 SQL Server2012中新增的AlwaysOn是一个新增高可用性解决方案.在AlwaysOn之前,SQL Server已经有的高可用性和数据恢复方案,比如数据库镜像,日志传送和故障转移 ...

  2. 在权限受限制的AD域环境中部署SQL Server AlwaysOn高可用性

    最近在给一个客户部署基于微软TFS的软件生命周期管理平台时,客户要求数据库层实现高可用性,减少因数据库服务器故障影响软件开发进展. 客户现有域是一台搭建在Windows Server 2008上的级别 ...

  3. 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目

    最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...

  4. 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)

    从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...

  5. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  6. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

  7. (转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建Alwa ...

  8. (转)从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    原文地址:  http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集 ...

  9. SQL Server AlwaysOn架构及原理

    SQL Server AlwaysOn架构及原理 SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例 ...

随机推荐

  1. C#文件流写入方法

    stream为服务端接收的文件流 var bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); // 设置当前流的 ...

  2. Android - 缺少NDT选项和C/C++ Build选项 问题

    缺少NDT选项和C/C++ Build选项 问题 本文地址: http://blog.csdn.net/caroline_wendy 时间: 2014.9.3 使用ADT(Android Develo ...

  3. hadoop在实现kmeans算法——一个mapreduce实施

    写mapreduce程序实现kmeans算法.我们的想法可能是 1. 次迭代后的质心 2. map里.计算每一个质心与样本之间的距离,得到与样本距离最短的质心,以这个质心作为key,样本作为value ...

  4. SWT的GridLayout一些参数解释

    1. GridLayout类的说明GridLayout在包org.eclipse.swt.layout中,各参数意义如下:1. numColumns指定布局器中的列数2. horizontalSpac ...

  5. [ACM] HDU 2063 过山车 (二分图,匈牙利算法)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  6. 黄聪:Microsoft Enterprise Library 5.0 系列教程(八) Unity Dependency Injection and Interception

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(八) Unity Dependency Injection and Interception 依赖注入容器Uni ...

  7. POJ 1146:ID Codes

    ID Codes Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6281 Accepted: 3769 Description ...

  8. 直接插入排序、折半插入排序、Shell排序、冒泡排序,选择排序

    一.直接插入排序 稳定,时间复杂度:最好O(n).最差O(n^2).平均O(n^2).空间复杂度O(1) void InsertSort(int L[], int n) { int i, j,key; ...

  9. 漫游Kafka介绍章节简介

    原文地址:http://blog.csdn.net/honglei915/article/details/37564521 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息 ...

  10. 解决TabActivity中子页面不通过导航跳转到还有一个页面的问题

    问题:当你的导航在TabActivity中 而子页面的一个button须要切换到当中的某一个导航页面 转载请注明出处:http://blog.csdn.net/x605940745 demo下载地址: ...