SQL Server应用程序性能调优之硬件配置

运维 服务器运维
当应用程序性能出现问题时,服务器硬件通常会背上黑锅,人们想到的往往是如何优化服务器的硬件。实际上恰恰相反,多数情况下,硬件并非导致性能问题的罪魁祸首。对于基于SQL Server的应用程序的性能和升级,服务器硬件所起的影响要远比人们想象的小。

当应用程序性能出现问题时,服务器硬件通常会背上黑锅,人们想到的往往是如何优化服务器的硬件。实际上恰恰相反,多数情况下,硬件并非导致性能问题的罪魁祸首。对于基于SQL Server的应用程序的性能和升级,服务器硬件所起的影响要远比人们想象的小。

  多数应用程序运行缓慢的原因是因为其糟糕的前期设计,而并非硬件性能不够。硬件通常被冠以恶名的原因是,在应用程序运行缓慢之前,性能问题通常不是那么显而易见。而且应用程序的设计不是说改就改的,人们解决性能问题最简单直接的办法就是提高其硬件性能。虽然这种办法也有一定效果,不过它不能真正完全解决问题,这也是为什么人们常常将性能低下归结为硬件问题的原因。虽然硬件有时候确实会导致性能问题,但多数情况下它却不是主要原因。

为了防止你的服务器硬件给SQL Server应用软件拖后腿,首先让我们简单看一下一些常见的硬件选择和调优问题。

  选择硬件

  为你的SQL Server应用选取最佳硬件要参照很多因素,诸如数据库的规模、用户的数量,数据库被使用的方式(OLTP或OLAP)等等。虽然没有成功的公式来估算服务器硬件需求,最好的办法就是在开发阶段提前开始测试你的应用。尽管许多有经验的DBA可以对你所需要的最佳硬件给出合理的估测,只有通过实际的测试才可确信满足你的应用需要的硬件是什么。

  在考察服务器硬件时,需要牢记以下硬件选择方面的事项:

  CPU:要购买可以扩展CPU数量的服务器。例如,通过测试结果你认为单CPU服务器就够用,那么你应该购买具备至少两个CPU安装空间的服务器,哪怕现在空着另一个CPU插槽的位置。预留下将来升级扩展的空间。

  内存:它可能是对SQL Server的性能影响最大的硬件部分。理想情况下,你的整个数据库应该可以fit into内存。不幸的是,这一般是不可能的。最低要求是,内存的大小应该能够容纳你的数据库中最大表,如果经济上可以接受,为服务器配备其能够支持大小的内存,换句话说,内存多了没坏处。

  I/O子系统:它对SQL Server性能的影响仅次于内存,也非常重要。最低要求是,使用硬件RAID系统来运行你的数据库。大概来说,你应该购买多个小硬盘,而不是一个大硬盘。在阵列中的硬盘数量越多,就可以获得更快的I/O。

  网络连接:在你的数据库服务器上,至少应该有一个百兆网卡,而且它应该连接到一个交换机上。理想情况下,服务器应该有两块网卡,通过全双工方式连接到交换机。

  调优服务器

  如果没有正确的配置和优化,最贵的服务器硬件未必具有最好的性能。我曾经遇到过很多硬件相关的性能问题,其多数原因是驱动未正确安装。这些硬件性能相关的问题中很多往往难于跟踪和解决。一般来说,应该让一个有经验的技术高手来确保硬件被正确安装和配置。然后,在该服务器被用于生产环境之前,在一定条件下测试你的应用程序,以发现潜在的性能问题。另外,你的操作系统也必须被正确的配置,这涉及到很多方面,在这儿无法具体介绍。

  为了在一个服务器获得最好性能,SQL Server应该独享一台服务器,而不应该同时还安装其它管理工具。不要为了省一点钱而将你的IIS或MTS服务器与SQL Server安装在同一台服务器上。这不仅仅会影响SQL Server的性能,而且使得性能调优和故障排查工作非常难于进行。

  优化SQL Server配置

  调优SQL Server的另一个常见误解是,为了获得最佳性能你必须定制优化它的多处配置。对于一些早期版本的SQL Server来说,这种做法或许有一定道理,但是对于最近版本的SQL Server,配置通常已经不再是一个问题,当然对于那些超大、超忙碌的服务器来说或许是另外一种情况。

  多数情况下,SQL Server可以自我调优。也就是说,SQL Server可以检查自己运行的任务,然后自动进行内部调整,以使指定任务获得尽可能高的性能。

  当你对SQL Server进行性能测试时,需要牢记SQL Server需要花一点时间来将自己调整到最优化。换言之,启动SQL Server服务后你立即获得的性能,与在有负载情况下运行几个小时后的SQL Server的性能是不相同的。因此在进行测试之前,要让SQL Server有一定时间来适应你的负载。

  通过企业管理器,或者sp_configure存储过程,你可以修改36个SQL Server配置选项。如果你没有调优SQL Server的丰富经验,我不建议你修改任何SQL Server的设置。如果你是一个新手,你所做的修改往往会适得其反,会降低SQL Server的性能。因为一旦修改了SQL Server的设置后,会使其丧失其自我调优的能力。

  如果经过深思熟虑后,你仍然认为修改一个或多个SQL Server配置可以提高其在特定环境下的性能,那么你应该稳妥谨慎的来对其进行修改。在你修改设置前,首先应通过诸如性能监视器之类的工具来了解当前SQL Server的性能,以其作为基准。每次只进行一处修改。不要一次进行多个修改,因为这样你无法明确每一个设置带来了性能上的什么变化。

  在进行了一处修改后,再次在相同负载下测量SQL Server的性能是否真正有所提高。如果没有,那么恢复到默认设置。如果的确有提高,再继续检查性能在其它负载下是否也会提高。通过后期测试,你或许会发现你的修改在某些负载下可以提高性能,但在其它负载下却会降低性能。这也是为什么我不推荐你修改多数设置的原因之一。

  一般来说,如果你的SQL Server应用程序遭遇到了性能相关问题,通过修改SQL Server设置方法解决这些问题的可能性非常小。

【编辑推荐】

  1. 2008年服务器市场盘点
  2. 基于Linux的FTP服务器权限管理
  3. 教程:为虚拟机选择合适的服务器硬件
责任编辑:符甲 来源: IT168
相关推荐

2009-01-08 19:14:37

服务器应用程序SQL Server

2009-01-08 19:11:39

服务器应用程序SQL Server

2010-07-28 09:25:41

jQueryJavaScript性

2023-03-03 08:14:33

JavaJDK调优

2020-12-03 08:00:00

SQL数据库MySQL

2010-02-04 09:41:03

Android应用程序

2011-09-02 14:05:25

SQL Server性能调优

2023-11-28 08:43:48

2009-07-29 11:33:14

ASP.NET技巧ASP.NET应用程序

2019-10-17 10:10:23

优化Web前端

2009-07-01 18:24:59

JSP应用程序JMeter

2010-08-18 09:42:11

DB2性能调优

2011-08-08 13:35:50

Web应用WANWeb应用程序

2010-07-19 13:35:51

SQL Server性

2011-09-20 10:41:45

Web

2010-11-15 16:20:33

Oracle系统优化

2014-12-16 09:35:13

DevOps

2017-07-21 08:55:13

TomcatJVM容器

2011-01-21 08:38:20

2011-01-19 11:10:50

程序交付优化应用程序性能管理监控
点赞
收藏

51CTO技术栈公众号