毫无疑问,许多电子商务网站都经历过假期的高访问量。例如,1-800-Flowers.com公司(1-800-Flowers.com网站)就在情人节、母亲节、圣诞节、复活节、感恩节、秘书节,以及团队感谢周那一天遇到了剧增的订单。还有其他大多数的在线零售商也都经历过从感恩节一直持续到12月26日的订货高峰期。
那么你从这些公司身上可以了解到,他们需要保持高可用性,快速运行的数据库。下面我将按照以下的总体概念和清单,讨论几种你可以应对高峰来临的方式。
可用性方法
集群
高可用性通常包含了集群。当你需要较高级别的正常运转时间的时候,你需要对SQL Server进行集群,由以下几部分组成,有几个节点集合在一起形成的一个单个实例的集群,他们在面对客户的时候表现为一个单个的节点。如果集群中的一个节点掉线了(由于SQL Server错误,硬件错误或者维护),其他的节点将会自动接过它的工作负载。客户根本不需要重新连接到其他的节点上,因为这些节点都连接到一个虚拟的服务器上,它漂浮在所有活动节点之上。
集权提供了对硬件和软件错误的自动错误容忍,但是它通常不会提供对本地错误的容忍(例如,放置集群的大厦或者房间内的电源坏了)。注意力应该放在消除单个点的失败,例如冗余电源供应或者备用的发电机能源。
地理集群和负载均衡
其他的高可用性方法包括地理集群,集群节点分布在不同的位置上;或者地理负载均衡,IP地址客户可以在主要的数据中心和灾难恢复网站之间交换。
EMC公司,日立数据系统公司,还有现在的收购了赛门铁克的Veritas软件公司都提供了硬件的数据镜像,它可以提供持续的复制,这样灾难恢复网站就可以保证拥有你的数据的实时拷贝。硬件数据镜像工具可以用于连接地理IP解决方案,为灾难恢复网站提供自动化的错误恢复。
缩小规模
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/sqlserver/)你还可以利用缩小规模的方法来将你的数据分散到多个工作机器上。不再让1000个用户都连接到一个SQL Server上,而是让10个SQL Server上分别连接100个用户。你的数据访问模式必须要与此相匹配,客户连接到哪个SQL Server都没关系,或者你必须要激活粘性会话。通过这种方式,每个客户在其会话长度内都连接到一个单个的SQL Server上。
例如,如果你的联盟中有10个SQL Server提供分类信息,并且在这10个SQL Server之间的数据也是相同的,那么客户连接到哪个SQL Server上,然后又重新连接到哪个SQL Server上,这都没有关系。SQL Server 2005中的点对点应用程序就被恰好是为这种类型的缩小规模设计的。
注意,SQL Server不能自动将负载分散给其他的SQL Server。你需要均衡网络负载,一边将负载分布到多个网络服务器上,并且联盟中的每个网络服务器上都安装一个或者多个SQL Server。
理解工作流
电子商务公司整年都在准备他们的旺季销售高峰。系统架构师研究工作流,以便于理解事务中的哪一个处理是必需的,哪一个可以是批量处理的,哪一个是可以从其他机器的并行处理中受益的。
考虑一下一般的下订单的操作。输入信用卡并且在网页上经过验证,确保数字以某个序列开始,并且满足一定的长度。这个步骤可以在浏览器上进行,这样就可以不用占用网络服务器的处理器周期。信用卡交费通常是没有经过授权的,因为网络服务呼叫会在这一点上慢下来,导致整体的可测量性解决方案等级下降。如果不需要网络服务呼叫认证每一个信用卡事务,那么电子商务网站就可以支持好几千个,甚至更多的页面。信用卡将会在稍后大批处理过程中进行处理。
正如上面的例子所演示等,通过仔细查看工作流,系统架构师辨认出可以异步执行的处理,那么整体的可测量性方案等级将会上升。
负载测试
具有广泛代表意义的负载测试是在负责复制产品机器的机器上完成的。这些负载测试都是经过严格分析的,能够标识并消除瓶颈。当瓶颈消除之后,负载测试将会重复进行,以标识并消除新的瓶颈。只要资源允许,这个迭代的过程将会持续下去。
预备
通常,所有的开发都会在电子商务网站迎接新的销售旺季之前几个星期结束,然后进入预备模式,不会再对产品机器进行任何的更改。自动的批处理管理也暂停了,只有在定位真正的攻击的时候才会使用批处理。在确定成为产品之前,这些紧急批处理的影响会在QA环境中进行评估。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/sqlserver/)清单“准备工作负载高峰”
作为数据库管理员,你会采取什么行动来让SQL Server做好对负载高峰的准备?以下是一些可遵循的步骤。
清单:让SQL Server为工作负载高峰做好准备
维护
如果你根本没有任何维护窗口:
?为尽可能多的不必要数据进行存档
?运行dbreindex来更新你的索引,并重新