原文: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. ACM-简单的主题Ignatius and the Princess II——hdu1027

    转载请注明出处:http://blog.csdn.net/lttree Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Othe ...

  2. java实现简单web服务器(分析+源代码)

    在日常的开发中,我们用过很多开源的web服务器,例如tomcat.apache等等.现在我们自己实现一个简单的web服务器,基本的功能就是用户点击要访问的资源,服务器将资源发送到客户端的浏览器.为了简 ...

  3. ORA-16525: the Data Guard broker is not yet available

    DGMGRL> disable configuration;ORA-16525: the Data Guard broker is not yet available Configuration ...

  4. linux下执行strlwr函数出错:ld returned 1 exit status

    执行strlwr函数时报错.源程序例如以下: #include<stdio.h> #include<string.h> void main() { char s[10]={&q ...

  5. OpenCms创建网站的过程示意图——专用OpenCms人们刚开始学习

    很多人听说过OpenCms,我知道它的强大,只需下载并安装,最后,我们看到了久违OpenCms,我们看到了它的简单的界面,喜悦之后,但难免困惑.如何用这个东西,我如何用它来网站,从哪里开始,无从下手. ...

  6. 用数据说话,外贸产品选择(中篇)-google趋势分析法

    在上篇文章<用数据说话,贸B2C产品选择(上篇)-热门搜索法>中我们能搜索出来几种产品了,那我们就拿上次搜索出来的热门产品来做一个趋势分析.我们经过几个站点挑出了几种热卖产品Wedding ...

  7. 高仿快车100--实战RadioGroup和RadioButton应用

    1.RadioButtonCheckBox的差别: a.单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后.通过点击能够变为未选中 b.一组RadioButton ...

  8. CentOS6.5 Nginx优化编译配置[续]

    继续上文CentOS6.5 Nginx优化编译配置本文记录有关Nginx系统环境的一些细节设置,有关Nginx性能调整除了配置文件吻合服务器硬件之前就是关闭不必要的服务.磁盘操作.文件描述符.内核调整 ...

  9. 在struts2中訪问servletAPI

    在struts2中訪问servletAPI,通俗点也就是使用servlet中的两个对象request对象和response对象. 前几天看到一个CRM项目的源代码,里面使用request对象和resp ...

  10. $(&#39;#checkbox&#39;).attr(&#39;checked&#39;); 回报checked或undefined该解决方案

    $('#checkbox').attr('checked'); 返回的是checked或者是undefined,不是原来的true和false了,有关此问题的解决方法例如以下 在JQ1.6之前的版本号 ...