SQLServer硬件性能监控列表

SQLServer硬件性能监控列表
--王成辉翻译整理,转贴请注明出处
性能监控列表
 SQLServer硬件特征 相应的描述
 Number of CPUs  
 CPU MHz  
 CPU L2 Cache Size  
 Physical RAM Amount  
 Total Amount of Available Drive Space on Server  
 Total Number of Physical Drives in Each Array  
 RAID Level of Array Used for SQL Server Databases  
 Hardware vs. Software RAID  
 Disk Fragmentation Level  
 Location of Operating System  
 Location of SQL Server Executables  
 Location of Swap File  
 Location of tempdb Database  
 Location of System Databases  
 Location of User Databases  
 Location of Log Files  
 Number of Disk Controllers in Server  
 Type of Disk Controllers in Server  
 Size of Cache in Disk Controllers in Server  
 Is Write Back Cache in Disk Controller On or Off?  
 Speed of Disk Drives  
 How Many Network Cards Are in Server?  
 What is the Speed of the Network Cards in Server?  
 Are the Network Cards Hard-Coded for Speed/Duplex?  
 Are the Network Cards Attached to a Switch?  
 Are All the Hardware Drivers Up-to-Date?  
 Is this Physical Server Dedicated to SQL Server?  

在上表里输入你的值.
   

监控硬件是早期的重要步骤

从以前的章节里(使用性能监视器),你可以找出一些潜在的硬件性能瓶颈。这一节里,我们将查看SQLServer硬件的每一个主要组件,以帮助最优化你硬件的性能。

将分以下几个部分进行:

  • CPU
  • Memory
  • Disk Storage
  • Network Connectivity
  • Misc.

作为监控的一部分,你需要完成上面的列表,这样,你就会对你的服务器无所不知了。 

CPU

CPU的数量

这第一个是显而易见的,越多的CPU性能越快。SQLServer2000的标准版支持4个CPU。企业版支持最多32个CPU,具体根据操作系统而定。更多的CPU对于全面提升SQLServer的性能是很有效的。
 
对任何一个基于SQLServer的应用程序需要的CPU数量进行估算是很困难的。这是因为每个应用程序的工作都是不同的,并且它们的使用也不同。有经验的DBA总是对应用程序需要什么样的CPU有个大概的了解,却很难真正知道需要什么样的CPU,直到在真实条件下测试了服务器的配置。

由于选择合适的CPU的数量是困难的,所以你可以考虑下面的原则:

  • 尽可能的购买更多CPU数量的服务器。
  • 如果你做不到,那么至少要购买一个能扩展CPU数量的服务器。几乎所以的SQLServer在工作量增加时都需要更多的动力。

这是一些潜在的假设:

  • SQLServer将仅仅用来运行一个同时不超过5个用户的财务应用程序,并且你预期未来两年不会改变。如果是这样,单CPU的服务器就足够用了。如果预期用户数量在不久会增加的话,那么你需要考虑购买一个单CPU的,并且拥有可扩展一个CPU数量的服务器以备不时之需。
  • SQLServer用来运行一个内部的写程序,这个程序不仅仅包括OLTP,而且需要支持繁重的报表需求。预期用户同时不会超过25个。如果是这样,你需要考虑一个双CPU的服务器,但是它应该可以扩展到4个CPU。“繁重的报表需求”的真正含义是很难预计的。我曾经看到一些相当简单,但是不好的写报表,占用了服务器全部的CPU。
  • SQLServer运行一个目前用户为100到150之间的ERP包。对于象这样的“重型”程序,询问推荐的硬件配置。因为他们已经对他们的产品需要的CPU配置有了一个很好的建议。

    我能提供一些其他的例子,但是通过这些我发现:正确预计基于SQLServer的一个特殊的应用程序的CPU的数量是很困难的。你通常应该购买一个比你认为要大的系统,因为在许多情况下,一个应用程序的使用需求经常是被低估了的。现在购买一个有多个CPU的大服务器来长期使用也不是很昂贵了,总比你在6到12个月后由于当初的低估不得不重新替换你整个服务器要划算得多。 

    CPU速度

    象CPU的数量一样,需要的CPU的速度 也是很难估计的。一般说来,尽量购买最快的CPU。购买速度快的总是好于速度慢的。 

    CPU 2级缓存

    我曾经遇到一个比较普遍的问题:购买2级缓存较小的便宜的CPU好呢,还是购买2级缓存较大的昂贵的至强CPU好?事实上,在购买2级缓存较小的更快的芯片和购买较大2级缓存的芯片上做出决定是很困难的。这里有一些规则:
    • 如果你仅有1、2个CPU,那么尽量买最快的,其次才考虑2级缓存。如果你一定要选择2级缓存大小的话,尽量选择较大的。
    • 但是,如果你有4个或更多的CPU,那么你需要较大2级缓存的CPU,即使它们的速度不太高。这是因为对于一个有4个或更多CPU的服务器来说,要想尽量让SQLServer运行良好的话,2级缓存一定要大,否则将浪费额外的CPU。 

    CPU监控列表

    既然本文是关于你SQLServer目前CPU性能的一个监控,那么你现在应该关注你目前的服务器是否存在CPU瓶颈。正如在《使用性能监视器找出硬件瓶颈》一文所讨论的那样,你可以使用性能监视器帮助你找到硬件瓶颈。
     
    如果你CPU目前没有瓶颈问题,那么你可以忽略下一部分关于memory的讨论。但如果你的服务器目前存在CPU瓶颈,并且是主要的性能问题,那么你可以选择以下的方法去解决瓶颈:
    • 减少服务器的负荷。可以通过减少用户数量、调优查询、调优索引、除去在服务器上运行的不必要的程序来达到目的。另外如果你的产品服务器上还运行有关于报表的程序,将其移到一个专门为报表做的服务器上。
    • 如果CPU瓶颈是由于缺少服务器内存引起的,请添加更多的内存。这是一个普遍的问题。
    • 如果你目前的服务器有更多的CPU插槽,那么请添加更多的CPU。
    • 如果可以的话,用更快的CPU升级你的服务器。
    • 购买一个新的有更多更快CPU的服务器。

    不幸的是,这些方法在处理CPU瓶颈时也不是轻而易举的,当然除非你们公司有足够的钱。作为一个DBA来说,你可能唯一能做的就是“减少服务器的负荷”这一项了。 

    内存

    在讨论完CPU后,现在开始讨论内存,不要认为它不象CPU那么重要。事实上,内存可能是任何SQLServer服务器最重要的硬件部分,它比其他硬件更能影响SQLServer的性能。

    当我们讨论内存的时候,一般指的是物理内存,而不是虚拟内存。SQLServer不是设计来用虚拟内存的,尽管它也能用。

    并非联合使用操作系统的物理内存和虚拟内存,SQLServer总是尽可能的使用物理内存。这主要是为了提高速度。访问内存中的数据总是比访问磁盘上的快得多。
     
    SQLServer不能总是把数据放在内存(SQLServer缓存)中,它也访问磁盘,就像操作系统管理虚拟内存一样。但SQLServer的“缓存”机制比操作系统的虚拟内存更快更诡异。
     
    快速的知道SQLServer是否有足够内存的方法是检查SQLServer的缓存命中率(在《使用performance Monitor找出硬件瓶颈》一文有过讨论)。如果这个计数器为99%或者更高,说明有足够的内存。如果这个计数器在90%与99%之间并且你对性能比较乐观的话,那么你的SQLServer可能有足够的内存,但是如果你不满意服务器性能的话,则需要添加内存了。

    如果这个计数器少于90%,关键在于性能无法被接受(如果运行的是OLAP,少于90%通常也没问题),所以需要添加更多的内存。

    SQLServer的物理内存的理想值应该超过服务器上最大数据库的大小。这总是不可能的,因为许多数据库是非常大的。如果你正在计算
    SQLServer的大小,并且有足够的预算,那么尽量去购买能容纳整个数据库大小的物理内存。假定你的数据库是4G或者更小,那么这通常不会成太大的问题。但是如果你的数据库更大(或者预期会超过4G),那么你可能容易地提供超过4G的内存。SQLServer2000企业版支持高达64G的内存,没有太多的服务器支持这么大的内存。
     
    即使SQLServer的缓存不能容纳整个数据库,SQLServer仍然能快速的获取数据。99%的缓存命中率意味着SQLServer需要的数据99%的时间都是在缓存中的,性能非常快。例如,我管理一个30G的数据库,但是服务器仅有4G的内存,而缓存命中率总是高于99.6%。这意味着大多数情况下用户没有同时访问数据库里所有的数据,仅仅一小部分而已,SQLServer也能将经常访问的数据始终放在缓存中,所以99%的请求在这种情况下能迅速完成,即使服务器的内存少于数据库的大小。
     
    那么,要点是什么呢?如果你的缓存命中率少于90%,那么认真的考虑添加更多的内存了。
     

    磁盘存储器

    在内存之后,磁盘存储器也是经常影响SQLServer性能的的最重要的因素。 它也是一个复杂的话题。在这部分,我将专注于磁盘存储器影响性能最容易的地方。

    服务器上可用磁盘空间的总量

    所有的磁盘阵列至少要20%的可用空间,这样对性能影响才不是很大。这是因为NTFS(假定你使用的是该磁盘格式)需要额外的空间才能工作得更好。如果没有可用空间,那么NTFS不能运行并且性能会降低。它也会导致更多的磁盘碎片,因为服务器读写数据更加可能。

    查看你SQLServer的每一块物理磁盘,检查一下是否有至少20%或者更多的可用空间。如果没有,考虑以下方法:

    • 删除磁盘上任何不需要的数据(清空回收站、临时文件、setup文件等等)
    • 删除一些数据以留出更多的空间
    • 添加更多的磁盘空间 

    每一个磁盘阵列的物理磁盘数量

    一个磁盘阵列通常由2个或者更多的物理磁盘作为一个单一的单元一起工作。例如RAID5阵列也许有4个物理磁盘。那么为什么了解你SQLServer的一个或多个磁盘阵列有多少个物理磁盘是很重要的呢?

    除镜像磁盘(两个物理磁盘一起工作)外,磁盘阵列有越多的物理磁盘,对于磁盘阵列的读写就越快。

    例如,假如想买一个新的做RAID5的至少有100M可用空间的SQLServer服务器,并要求提供以下两种不同的磁盘阵列配置:

    • 4个36G的磁盘(可用空间为108G)
    • 7个18G的磁盘(可用空间为108G)
    按照要求这两者都符合标准。但是哪一种磁盘阵列能提供更快的读写性能呢?答案是第二种,即7个18G的磁盘。为什么呢?

    一般说来,磁盘阵列中磁盘越多,可用来读写的磁盘头就越多。例如,SCSI磁盘可以同时读和写数据。所以一个磁盘阵列有越多的物理磁盘,该磁盘阵列的读写速度就越快。阵列中的每个磁盘分担一部分工作量,磁盘越多越好。这儿有一个限制,依赖于磁盘控制器,但通常说来,越多越好。

    那么这对你来说意味着什么呢?在你查看了你的服务器有多少磁盘阵列、每个磁盘阵列有多少磁盘后,重新配置目前的磁盘阵列以更好的利用
    是不是可行呢?

    例如,假定你目前的服务器有2个磁盘阵列用来存储用户数据库。每一个是3个18G的磁盘组成的RAID5阵列。这种情况下,将两个阵列重新配置成一个由6个18G的磁盘组成的阵列会更好。这不仅仅提供了更快的I/O,而且也能获得18G的的磁盘空间。

    仔细检查你目前的配置,你可以改变很多,也许不可以。但是如果你可以改变的话,你将在你改变之后立即从中得到好处。 

    SQLServer数据库通常使用的磁盘阵列的RAID级

    或许你已经知道,磁盘阵列有不同类型的配置,称作RAID级别。每一级别都有各自的拥护者和反对者。下面是一些经常使用的RAID级别的简单总结,了解后你就知道在你的SQLServer怎样更好的使用它们:

    RAID 1

    • 操作系统(包括虚拟内存)和SQLServer最理想的是运行在RAID1磁盘阵列上。也有人将虚拟内存运行在一个独立的RAID1磁盘阵列上,但是我对这样做是否能提供虚拟内存性能表示怀疑,在一个好的配置的服务器上,那不是问题。 

    • 如果你的SQLServer数据库非常小,所有的数据都能在一个磁盘下存储,那么请为你的数据库文件存储考虑RAID1级别。

    • 理想地,每一个独立的事务日志应该运行在一个独立的RAID1磁盘阵列上。这是因为事务日志在不断的读写,通过放在独立的磁盘阵列上,由于连续的磁盘I/O不和更慢的随机的磁盘I/O混合使用,从而使性能得到提升。

    RAID 5

    • 尽管这是比较流行的RAID级别,对于最优化SQLServer的I/O性能还不是最好的选择。如果数据库的写操作比例超过10%,大多数OLAP数据库都是这样,写性能会降低,从而伤害整个SQLServer的I/O性能。RAID5最好用于只读或者大部分时候是读的数据库。在微软的测试发现RAID5比RAID10几乎要慢50%。

    RAID 10

    • RAID10为SQLServer数据库提供了最好的性能,尽管它是最贵的。数据库的写操作越多,使用RAID10更重要。

    • RAID10阵列对于事务日志也是不错的选择,假定它只用来存储单个事务日志。

    更可能的是,你目前的SQLServer配置不符合上面的建议。某些情况下,你需要更改你目前的配置以尽量符合上面的建议,但是大多数情况下,你可能不得不忍受直到有新的预算去买新的服务器和磁盘阵列。

    如果你只能选择上面的一个 建议的话,我建议你使用RAID10。这将最大化你SQLServer的I/O性能。 

    硬件RAID vs. 软件RAID

    可以通过硬件或者软件(通过操作系统)实现RAID。不要使用软件RAID,会很慢,总是使用硬件RAID,这是不争的事实。

    磁盘碎片

    如果你在一个崭新的磁盘阵列上创建了一个新的数据库,数据库文件和事务日志文件会是一个连续的文件。但如果数据库文件或事务日志文件
    在创建时指定的最大容量里增长(通常都会超过该容量),随着时间的推移文件可能会产生碎片。文件碎片(磁盘阵列上分散的许多块文件)
    引起你的磁盘阵列在读写数据时变慢,从而影响磁盘I/O的性能。

    作为性能监控的一部分,你需要了解你的SQLServer数据库和事务日志是怎样产生碎片的。如果你使用的是Windows2000或者2003,你可以使用内建的碎片整理工具去分析文件变成碎片的严重程度。如果你运行的是NT4.0,那么你可以借助第三方工具如DisKeeper来进行分析。

    如果分析结果需要进行碎片整理,则进行。不幸的是,整理SQLServer数据库和事务日志的碎片不总是一件容易的事。运行着的文件,象在

    SQLServer上运行的数据库和事务日志文件,不总是能进行碎片整理。例如,内建的碎片整理工具不能整理SQLServer的MDF和LDF文件,但是DisKeeper8.0在大多数情况下可以,而不是全部情况都可以。这意味着在某些情况下,为了整理SQLServer的MDF和LDF文件的碎片,你不得不使SQLServer离线。依赖文件整理的方式、文件的大小、这可能需要花费很多小时。

    你真有必要对数据库文件进行碎片整理吗?如果你的I/O性能目前比较适中,那么你不需要进行碎片整理。但是如果你的I/O性能是个瓶颈的话

    ,碎片整理是一个提升性能的便捷之道,尽管大多数情况下会花费一些时间。

    理想地,你应该周期性的整理你的SQLServer数据库和事务日志碎片。这样,你能确信没有I/O性能问题。 

    操作系统

    为了最佳性能,操作系统文件和SQLServer数据库文件(MDF、LDF文件)不要放在一个磁盘阵列上。另外,操作系统文件应该放在一个支持

    RAID1、5或10的磁盘阵列上。

    和大多数人一样,通常我也是在服务器的C盘上安装操作系统。并且为了容错和最好的性能将C盘配置为RAID1的镜像磁盘。

    在大多数情况下, 只要你不把操作系统和SQLServer数据文件放在同一个磁盘阵列上,你在服务器上处理操作系统文件就会获得很大的性能。

    SQLServer程序

    象操作系统文件一样,SQLServer程序也不是很挑剔,只要不和SQLServer数据文件放在同一个磁盘阵列上就行。和操作系统文件一起,我通常将SQLServer程序放在被配置为RAID1镜像的C盘。

    如果你在配置SQLServer7.0的群集,那么SQLServer程序不能安装在C盘,必须安装在共享磁盘阵列上。不幸的是这经常和SQLServer的数据文件是同一个磁盘阵列,除非你有足够的钱仅仅为提升SQLServer程序性能而购买一个独立的独立磁盘阵列。当性能被与数据库文件在同一磁盘阵列上的SQLServer程序轻微影响时,获得容错能力也是一个不太坏的折中方案。另一方面,升级到SQLServer2000群集是一个不错的选择。如果你在配置SQLServer2000群集,那么SQLServer程序必须放在本地磁盘上,而不是共享磁盘阵列上,所以性能不成问题。

    虚拟内存

    如果你有一台SQLServer的专用服务器,并且SQLServer的内存设置为动态(缺省),那么虚拟内存将很少用到。这是因为SQLServer通常不会太多的使用它。因此,虚拟内存放在任何一个特定的位置不是关键,除了不要放在SQLServer数据文件的同一磁盘阵列上。

    通常,我把虚拟内存放在操作系统和SQLServer程序的同一磁盘阵列上,正如我前面所述,它是一个支持RAID1、RAID5、RAID10的磁盘阵列,通常是C盘,这使管理员更容易管理。

    如果不是SQLServer专用服务器,除了SQLServer外还运行了其他程序,由于其他程序的原因,虚拟内存可能会有问题,为了获得更好的性能,你需要考虑将虚拟内存配置到一个专用的列上。然而,更好的方法是使用一台SQLServer的专用服务器。

    tempdb数据库

    如果tempdb数据库的使用比较繁重,为了提高磁盘I/O性能,考虑将它移到一个RAID1或者RAID10的独立磁盘阵列上。不要使用RAID5,因为对于写操作是慢的,如使用,会对tempdb产生副作用。如果不能提供独立的磁盘阵列,你有不想将它与数据库文件放在同一个磁盘阵列上,可以考虑放在操作系统的那个磁盘上,这将帮助减少I/O的争夺以提高性能。

    如果应用程序非常多的使用tempdb数据库,从而引起文件增长超过它的缺省大小,那么你需要将tempdb的缺省大小增加到最近你的应用程序实际使用的tempdb的大小。这是因为每次SQLServer服务重新启动后,tempdb文件都会按照缺省值重建。当tempdb增长时会花费一些性能资源。通过在SQLServer重新启动时给tempdb分配一个合适的大小,你不必担心在使用时超过这个大小了。

    另外,在tempdb数据库里繁重的操作会降低应用程序的性能。尤其是在创建一个或多个大的临时表去查询或者做联接时。为了加速这些查询,确信tempdb数据库的AUTOSTATS(自动更新统计信息)选项已打开,并且在这些临时表上创建一个或多个索引。大多数情况下,你将发现这能充分加速你的应用程序。但象许多性能建议一样,测试看看是否有实际的帮助。 

    系统数据库

    系统数据库(master、msdb、model)没有大量的读写操作,所以把它们和你的SQLServer数据文件放在同一磁盘阵列上通常也没有性能问题。仅仅一种情况除外,就是有成百上千用户的大数据库。这种情况下,把系统数据库放在一个独立的磁盘阵列上以稍微提高I/O性能。 

    用户数据库 

    为了最佳性能,用户数据库文件放在它们自己的磁盘阵列上(RAID1、5或10),和所以的其他数据库文件,包括日志文件分开。如果再同一个SQLServer上有多个大数据库的话,考虑为每一个数据库文件分配一个独立的磁盘阵列以减少I/O争夺。 

    日志文件

    理想地,每一个日志文件都应该有它自己独立的磁盘阵列(RAID1或10,注意RAID5会降低事务日志写操作的性能,低于你的预期)。原因是大多数时候,事务日志在连续的写操作,如果磁盘阵列能连续的写数据的话(不必中断去进行其他的读写操作),那么连续写会很快。但是如果你的磁盘阵列不能连续的写的话,由于它不得不随机的执行其他读写操作,连续写就得不到执行,性能就降低了。

    当然,为每一个日志文件提供一个独立的磁盘阵列是很昂贵的。那么至少将所有的日志文件放在一个磁盘阵列上(RAID1或RAID10),而不要与数据库文件放在一个磁盘阵列上。连续的写性能尽管没有为每个日志文件提供一个独立的磁盘阵列那样好,它仍然比试图与数据库文件一起竞争磁盘I/O的性能好的多。 

    服务器上磁盘控制器的数量

    单个的磁盘控制器,不论它是SCSI还是fibre,都有一个最大的吞吐量的限制。因此,你需要让磁盘控制器的数量与你期望的数据吞吐量相匹配。每个控制器都是不同的,我无法推荐一个明确的解决方案,但最少应该有2个磁盘控制器。一个用于非硬盘设备如CD-ROM、备份设备等等。另一个用于硬盘。目的是不要将快的和慢的设备放在同一个控制器上。

    经常使用的一个较好的方案是:一个控制器为非硬盘设备,一个为RAID1的本地硬盘,第三个(有时更多)用于存放数据库文件和日志文件的磁盘阵列。确保不要为控制器捆绑超过它能处理的更多的磁盘,那样当它工作的时候,会降低性能。 

    服务器上磁盘控制器的类型

    总是尽可能的购买最快的磁盘控制器,如果你想要最好的SQLServer性能的话。也许你知道,不同的磁盘控制器有不同的性能特征。例如,对于SCSI类型来说,就有Wide SCSI, Narrow SCSI, Ultra SCSI等不同的类型。光纤连接在更小的层次上,也和上述一样,不同的磁盘控制器有不同的性能特点。

    由于控制器的种类很多,我不能做任何明确的建议。通常硬件厂商会提供不同的模型供选择。逐一咨询各自的利弊,选择最适合你的那一款。 

    服务器上磁盘控制器的缓存大小

    当你购买磁盘控制器的时候,也要考虑它缓存的大小。一些磁盘控制器允许添加额外的磁盘缓存。通常你要购买的磁盘缓存应和控制器能容纳

    的缓存一样多。SQLServer对I/O是非常强烈的,所以去做任何可以提高I/O性能的事,象购买一个大的磁盘缓存,将帮助很大的改善性能。
      

    磁盘控制器上的写回缓存是开还是关?

    磁盘控制器上的磁盘缓存提供两个方法去加速访问。一个是为了读,一个是为了写。这其中最重要的是读,这是大多数SQLServer数据库花费磁盘I/O时间的地方。另一方面,一个写回缓存是用来加速写操作的,而写相对于读来说通常不是很多。不幸的是,大多数情况下,SQLServer采取写回缓存不打开,因此,写回缓存在大多数磁盘控制器上是被关掉的。如果你不那样,在一定环境下,在SQLServer写数据后(一旦它写完数据,它就会认为是正确地写的),可能会取得一些脏数据,但是由于某些原因(例如电力不够),写回缓存不会把数据写到磁盘上。

    一些控制器提供了备份电池以防止这样的问题,但它们不总是能如预期的那样工作。个人认为,宁愿要正确的数据虽然写慢一点,也不要错误

    的数据,尽管那样写更快。 换句话说,我建议你关掉磁盘控制器上的写回缓存,虽然那样会对写性能有一些非常小的影响。 

    磁盘转速

    磁盘阵列里的磁盘有不同的转速。 正如你所想,为了最佳的性能,总是购买最快的磁盘。通常是15000转或更快。另外,不要将不同转速的磁盘放在同一个磁盘阵列里,那样会影响性能。 

    服务器上的网卡数量是多少?

    幸运的是, 网络流量通常不会称为SQLServer的瓶颈。单个网卡总是足够用。但是如果你发现网络流量成问题了(你已经有成百上千个用户),那么添加多个网卡总是正确的,这能提高性能。另外,两个或者更多的网卡能增加冗余,减少宕机时间。

    网卡速度是多少?

    至少应使用100M的网卡,10M的不能满足你需要的带宽。如果一个或者更多的100M的网卡不能满足,考虑用G级的网卡。事实上,你可能需要完全地跳过100M的网卡而仅仅用G级的网卡代替。使用更快的网卡不会增加网络流量,它仅仅允许更多的流量通过,轮流的允许你的服务器在适宜的性能下运行。 

    网卡硬编码是Speed/Duplex的吗?

    如果你的SQLServer有两个10/100或者10/100/1000的网卡,假定是自动识别网卡速度并设置为适合的,别相信那个能正常的工作。网卡通常不能正确的自识别,总是设置一个小于最佳速度的值或者duplex设置,这样会影响网络性能。你需要做的是手工设置卡的速度和duplex设置,以便你能确认它已经正确的设置了。 

    网卡是连在交换机上的吗?

    在一个大的数据中心这是显而易见的,但是对于小的机构来说,使用一个Hub来连接服务器。要是那样,请认真考虑用适当的交换机替换掉Hub,用可能最高的性能去配置交换机,例如100M并且全双工通信。将Hub替换为交换机后在网络性能上会有一个戏剧性的不同。 

    所有硬件的驱动都是最新的吗?

    诚然,这是一个烦人的话题,但它比你认为的更重要。最大的性能消耗之一是有Bug的驱动(会引起一些奇怪的不常见的问题),无论它们是在磁盘控制器中还是网卡中,或者别的地方。通过使用最新的驱动,你有可能得到更好更快的性能的驱动,从而提高SQLServer的性能。

    你应该定期的检查你的硬件是否有新的驱动可用,当你有时间的时候去安装它们。我本人曾经将一个老的有很多bug的驱动更新后是性能得到了彻底的根本提升。 

    SQLServer服务器是专用的吗?

    前面我间接提到过,SQLServer应该运行在一个专用的服务器上,而不是和其他应用程序、软件共享一个服务器。当你将SQLServer和其他软件共享时,你迫使SQLServer去争取物理资源,这样调优SQLServer性能就更加困难。有很多次我在查找SQLServer性能低下的原因时都发现是另一个和SQLServer运行在同一台服务器上的应用程序的缘故。

  • posted @ 2007-04-20 09:38  空中的风月  阅读(3184)  评论(1编辑  收藏  举报