技术开发 频道

SQL Server扩展方案:纵向还是横向?

  【IT168 评论】扩展性是系统通过增加额外的资源,无需从根本上改变系统设计上架构就能支持更多负载工作量的能力。我们应当区分扩展性和可靠性,因为可靠性是系统无故障体验或者同时无停机管理工作的能力。那么,接下来我们将一起看看通过硬件基础架构增加SQL Server扩展性的可选方案。

  SQL Server扩展可选方案

  为了改善我们SQL Server基础设施扩展能力,我们基本上有两种可选方案:纵向扩展(scale up)和横向扩展(scale out)。

  纵向扩展的做法是给现有服务器添加新资源,比如处理器和内存。也就是说,我们可以通过增加额外的处理器和内存获得性能提升。但是,每单位成本获得的性能将明显递减,因为高端硬件可能会更昂贵。

  横向扩展是给现有基础架构中增加新服务器,这样的方式也增加了系统资源,因为数据可以跨这些新服务器做分区或复制。新服务器与原服务器共同协作,分担该系统特定部分的处理。例如,我们可以对现有双节点的双活模式(active-active)SQL Server集群增加另外两台SQL Server节点,实现横向扩展获得性能提升。这些新的SQL Server服务器将使我们集群环境性能翻倍,因为负载现在被分布到四个节点上了,而不是原来的两个节点。

  选择纵向扩展还是横向扩展

  在为新建数据中心考虑企业架构时,我们必须对每个场景考虑选择纵向扩展还是横向扩展。例如,考虑你选择双活模式SQL Server集群的场景,有两个节点,每个节点有两个处理器。这种SQL Server集群生产环境在最近几个月出现了性能问题,问题的出现与最近业务增长有关。经过调研,你决定扩展该SQL Server集群环境。在这种情况下,我们必须决定要采用现有四个处理器的集群环境并给每个节点增加两个处理器达到分别四个共八个处理器(纵向扩展),或者再增加两个各有两个处理器的节点(横向扩展)。

  选择纵向扩展还是横向扩展需要考虑以下几个因素:

  •横向扩展比纵向扩展需要更少的停机时间。如果你选择横向扩展,你只需要给现有SQL Server基础架构中增加新的服务器,而如果你选择纵向扩展,你要通过给现有SQL Server服务器添加硬件资源(比如:CPU、内存和磁盘)来改善你的基础架构,这当然需要一定的停机时间。

  •横向扩展可以提供更好的可用性,因为一旦某一台服务器出故障,整个系统仍然可以继续运行。

  •横向扩展可以给你的系统增加更多内存,而无需64位架构。

  •横向扩展架构可能会很昂贵,因为它需要给更多的服务器供电和制冷,增加了数据中心的运营成本。这种方式还增加了软件授权的成本,需要给多增加的服务器上的软件购买授权。此外,所有这些额外的服务器必须由数据库管理员、网络管理员和存储管理员共同纳入管理,增加了一定的劳动力成本。

  SQL Server扩展性思考

  在选择哪种扩展方案之前,要确保你已经通过应用和数据库优化从现有SQL Server基础架构中获得了非常好的性能。你可以通过调优解决大部分性能和扩展性问题。例如,如果系统瓶颈在处理器和内存水平上,这可能是由于应用或者数据库设计不良引起的。在这种情况下,对SQL Server基础设施做扩展不是非常好的解决方案。

  作出决定之前,以下几点你需要过一遍:

  •在纵向扩展或横向扩展之前先对应用和数据库代码进行优化。我经常遇到运行不佳的系统,其中应用程序和数据库代码没有解锁资源,比如对不再需要使用的表继续占用。低效的锁可能导致严重的性能问题。

  •要优化应用程序和数据库设计。如果应用程序数据库使用了低效的索引或者数据库设计不良,SQL Server通常会遇到处理器、内存和磁盘IO瓶颈。

  •数据库中归档历史和报表数据。要考虑对大数据库表做分区,这样可以提供更好的性能。

  •定期检查应用程序和数据库代码,要尽量尽早识别SQL Server扩展性问题,而不是更迟,这样你可以修改应用和数据库设计,缓解性能和扩展性问题。

  •在独立分开的磁盘上创建数据库和日志文件,确保它们不会竞争磁盘空间和磁盘访问。你可以把文件放到连接不同磁盘控制器的磁盘子系统上来进一步减少磁盘IO瓶颈的可能性。此外,把临时数据库放到独立于用户数据库的磁盘驱动器上可以改进磁盘IO性能。

  原文链接:http://www.searchdatabase.com.cn/showcontent_76353.htm?lg=t

0
相关文章