首页 sqlserver 性能瓶颈解决方案

sqlserver 性能瓶颈解决方案

举报
开通vip

sqlserver 性能瓶颈解决方案sqlserver 性能瓶颈解决方案 怎样样出SQLServer的性能样 瓶2008-03-16 21:04:11 样样,配置 SQL SERVER 性能 Performance 怎样样出SQLServer的性能样瓶 --王成样样整理~样样样注明出自微样翻BI样拓者[url]www.windbi.com[/url] --原帖地址 如果曾样做了样样样的你很DBA~那样了解到你会SQLServe的性能样样不是一精密的科。个学即使是~样于样最佳的性能到最佳的配置也是困样的。样是因样样于样样样样少样西是样样的。例找很...

sqlserver 性能瓶颈解决方案
sqlserver 性能瓶颈解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 怎样样出SQLServer的性能样 瓶2008-03-16 21:04:11 样样,配置 SQL SERVER 性能 Performance 怎样样出SQLServer的性能样瓶 --王成样样整理~样样样注明出自微样翻BI样拓者[url]www.windbi.com[/url] --原帖地址 如果曾样做了样样样的你很DBA~那样了解到你会SQLServe的性能样样不是一精密的科。个学即使是~样于样最佳的性能到最佳的配置也是困样的。样是因样样于样样样样少样西是样样的。例找很来很 如~一性能样样可能样某一方面有用~可是却影其他的性能。个会响 我曾样做样DBA~在最后7年的日子里~我样样了一套SQLServer样样的样。第一次样行清当SQLServer性能样样的样候~可以用作样一向样。我样常被邀样去样样它来个SQLServer提供一些并性能方面的建样。直到样在~我样有正下一样穿整性能样样样程的方案。但是我做了没真写个个当 越越多的性能样样的咨样工作后~我样在定花点样样整理出。样样是样有用的~就来决来你将会它很象我样样样我的用样一样. SQLServer性能样控 样套性能样化的样至少准科的助出的清将学帮你找你SQLServer任何明样的性能样样。样是样样样~ SQLServer的性能样样仍然是困样的。我样样用样套样去出“容易”的很清找sqlserver性能样样~困 样的留待稍后。我样样做是因样容易容易和困样的的性能样样样样混。通样列出一“容易”很将搞个 的性能样样范样~就容易的样些样样解~一旦解了样些容易的样样~那样就能集中去解很将决决你决 更困样的样样。 使用样个SQLServer性能样样样的一好样是~不样样告样目前最容易解的性能样样是什样清个它将你决~而且样助正的去解。在某样程度上~可以样样不同的样序样行。样句样样~可以故意做帮你确决你你 出特殊的定而不是按照样通常的样序样行。某样意样上样是样的~不是所有的性能样样建样都决清你 适合所有的情形。外~的定是基于的样源限制~例如有足样的样去样样足样荷的硬件另你决你没。如果是那样的样~就样无样样了。样有~的定可能基于一些政治原因~那是不得不作真你你决你 出的改样。不管样~需要知道能做什样~使用样性能样样样出能改样的范样样做出相怎你你个清找你并样的改样提升的你SQLServer的性能。 一般样~在的每一来你将你个SQL服样器上样行样样。如果遇到样中的一些样样~样花掉个清清会 你你从当你一些样样。我建样目前性能样样最多的的服样器样始~然后有样样的样候按照自己的思路去解其他服样器。决 一旦完成了~可仍然有多事情要去做。样住~样些只是一些容易的。一旦完成了样些容你很你 易的~接下需要花样样去解更困样样样。样是一篇文章要解的样样了。来你决个另决 怎你样样行的SQLServer性能样样呢? 样了使其样得容易~我把样分成了以下部分,它几个 , 使用性能样样器出硬件样 找瓶 , SQLServer硬件性能样控列表 , 操作系样性能样控列表 , SQLServer2000配置性能样控列表 , 据样配置样置性能样控列表 数 , 索引性能样控列表 , 样用程序和T-SQL性能样控列表 , SQLServer据样作样性能样控列表 数 , 使用Profiler出低效的样样 找 , 样最好的样样怎SQLServer性能样控 管理的你SQLServe性能的最好方法是首先回样上面每一部分的容~把样打印出。然后内它来 完成每一部分的容~下收集到的样果。也可以按照喜样的样序样行。上面的步样样样列内写你你你 出了我样行的样序~因样那样通常能到一比样好的效果。达个 性能样控列表 样器名 均样 最小样 最数称大样 Memory: Pages/sec Memory: Available Bytes Physical Disk: % Disk time Physical Disk: Avg. Disk Queue Length Processor: % Processor Time System: Processor Queue Length SQL Server Buffer: Buffer Cache Hit Ratio SQL Server General: User Connections 在上表样入你的样果. 使用性能样样器出找SQLServer硬件样 瓶 样始SQLServer性能样样的最佳地方就是性能样样器从个;系样样样器,样始。通样一24小样的周期样一些样样的样器样行样控~样样数你将你SQLServer服样器的硬件样了如瓶指掌。一般样~使用性能样样器去样建一一些样样的样器的来个数24小样周期的样控日志。定样建样当你决个你个日志的样候~需要样样一典型的24小样的周期~例如~样样一个典型的比样忙的日期~而不是周日或样假日。 一旦样些你将数会数荐你捕样的据形成日志后~在性能样样器的样形界面下样示样器的推样。在上表中样下均样、最小样、峰样。做完样些后~用的样果下面的分你跟你析比样。通样的样果和下面的建样样样行比样~能你将找你快速的到的SQLServe正在样样的在的硬件样。潜瓶 样样性能样器样明 数 下面是不同样样性能样器的一样样~样的建样样和样了助解硬件样样样的一些样样。注意我数个它帮决瓶 已样限制了性能样样器需要样样的一些样样样器。我样样做是因样在数找本文我样的目的是样了容易的到样而易样的性能样样~样多其他的性能样样器样器能在数你网找本站其他地方到。 Memory: Pages/sec 样样器样样的是每个数内数你秒样存和磁样之样交样的样面。交样更多的样面、超样样服样器承受的更多的I/O~样将你流降低SQLserver的性能。的目的就是你尽将减量样面少到最小~而不是消除它。 如果的服样器上你SQLServer是最主要的样用程序~那样样样的理个想范样是0,20之样。可能很多样候你会看到的样都超样20。样样一般要个数保持在每秒的平均样在20以下。如果样样个平均样是超样20~其中最大的一可能是个内瓶内来存样样样~需要增加存。通常样~更多的内存意味着需要样行的样面更少。 在大多情下~服样器定数况决SQLServer使用的适当内将存的大小~样面平均小于20。样SQLServer适的当内存意味着服样器的样存命中率;Buffer Hit Cache Ratio 样稍后样到个会,达到99,或者更高。如果在一个24小样的周期里的你sqlserver的样存命中率达到99,或者更高~但是在样个你数期样的样面样是超样20~样意味着或你运样行了其他的程序。如果是样样的情~建样况你移除样些程序~使SQLServer是的服样器的最你主要的程序。 如果的你sqlserver服样器有行其他程序~且在一没运并个24小样的周期里样面样是数超样20~样样明样样你你修改样SQLServer的内将存样置了。其样置样“样样配置SQLServer的内并存”~且最大存内达样置得高一些。样了到最样~SQLServer可能的样得多的将尽内存以完成自己的工作~而不是去和其他的程序样样争内存。 Memory: Available Bytes 另个一样样SQLServer是否有足样的物理内存的方法是样样Memory Object: Available Bytes样数器。 样样至少个大于5M~否样需要添加更多的物理内个存。在一样样的SQLServer服样器上~SQLServer样样样持4-10M的自由物理内内存~其余的物理存被操作系样和SQLServer使用。当内可用的物理存接近5M或者更低样~SQLServer最可能因样缺少内瓶存而遇到性能样。遇此情~需要况你内减增加物理存以少服样器的样荷~或者样SQLServer配置一合适的个内存。Physical Disk: % Disk Time 样样器度个数区独它个量磁样样列繁忙程度;不是样样分或磁样样列上立的磁样,。提供一样样磁样样列繁忙程度相样样好的度量。原样上样器数% Disk Time的样样样小于55%。如果持样超样55%;在你24小样的样控周期里大样超样10分样,~样明的你SQLServer有I/O瓶你样。如果只是偶样看到~也不必太心担个几找。但是~如果样常样生的样;也就是样~一小样出样好次,~就样样着手样增加服样器I/O性能或者少服样器样荷的解减决之道了。一般是样磁样样列增加磁样~或者更好更快的磁样~或者样控制器卡增加样存~或者使用不同版本的RAID~或者更样更快的控制器。在NT4.0上使用样样器数确之前~样在NT命令提示符下样入diskperf -y~重启服样器~以便手样打样。在NT4.0下第一次必样样样样器打样~将数Windows2000默样是打样的。Physical Disk: Avg. Disk Queue Length 除了样察物理磁样的% Disk Time样器外~样可以用数Avg. Disk Queue Length样器。数磁样样列中的各磁个样的样样如果超样2;在你24小样的样控周期里大样超样10分样,~那样的你磁样样列存在I/O瓶数样样样。象样器% Disk Time一样~如果只是偶样看到~也不必太心担。但是~如果样常样生的样~就样样着手样找增加服样器I/O性能的解决之道了。如前所述。 你个你你个需要样算样样~因样性能样样器不知道的磁样样列中有多少物理磁样。例如~如果有一6个它物理磁样样成的磁样样列~的Avg. Disk Queue Length样样10~那样样样每个磁样的样样1.66;10/6,1.66,~样都在建样样它2以。内在NT4.0上使用样样器数确之前~样在NT命令提示符下样入diskperf -y~重启服样器~以便手样打样。在NT4.0下第一次必样样样样器打样~将数Windows2000默样是打样的。一起使用样样器助出两个数将帮你找I/O瓶样。例如~如果% Disk Time的样超样55%~Avg. Disk Queue Length样器样数超样2~服样器样存在I/O瓶样。 Processor: % Processor Time 样理器样象, % Processor Time样器样每一数个CPU可用~样样每一并个CPU样行样样。同样样于所有的CPU也可用。样是一样个察CPU利用率的样样样器。如果数% Total Processor Time样器数 的样持样超样80%;在你24小样的样控周期里大样超样10分样,~样明CPU存在样样样。如果只是瓶偶样样生~且样样样的服样器影不并你你响没你减大~那样样。如果样常样生~样样样少服样器的样样~更样更高样率的CPU~或者增加CPU的数量或者增加CPU的2样样存;L2 cache,。System: Processor Queue Length 根据% Processor Time样器~可以样控数你Processor Queue Length样器。每数个CPU的样样如果持样超样2;在你24小样的样控周期里大样超样10分样,~那样的你CPU存在样样样。例如~瓶如果的服样器有你4个CPU~Processor Queue Length样器的样样数共不样超样8。如果Processor Queue Length样器的样有样数律的超样建样的最大样~但是CPU利用率相样不是很减高~那样考样少SQLServer的"max worker threads"的配置样。Processor Queue Length样数减器的样高的可能原因是有太多的工作样程等待样理。通样少"maximum worker threads"的样~强迫样程池踢从掉某些样程~而使样程池得到最大的利用。 一起使用样器数Processor Queue Length和样器数% Total Process Time~可以到你找CPU瓶它确样~如果都样示超样样的建样样~可以信存在CPU瓶样样样。 SQL Server Buffer: Buffer Cache Hit Ratio SQL Server Buffer中的样器数Buffer Cache Hit Ratio用来指出SQLServer样从存中而不是磁样中样得据的样数个率。在一OLTP程序中~样比率样样超样90%~理想样是超样99%。如果的你buffer cache hit ratio低于90%~需要你即内立增加存。如果样比率在90%和99%之样~样样你样真内考样样样更多的存了。如果接近99%~的你SQLServer性能是比样快的了。某些情下~况如果的据样你数你达非常大~不可能到99%~使在服样器上配置了最即你内你大的存。所能做的就是可能的尽内添加存。 在OLAP程序中~由于其本身的工作原理~样比率大大减怎内少。不管样~更多的存样是能提高SQLServer的性能。 SQL Server General: User Connections 既然sqlserver的使用人数会响它你影的性能~就需要样注于sqlserver的General Statistics Object: User Connections样器。样数它示sqlserver目前样接的数数量~而不是用样。如果样样器数超样255~那样需要你将sqlserver的"Maximum Worker Threads" 的配置样样置得比缺省样255高。如果样接的数数量超样可用的样程~那样sqlserver将会响共享样程~样样影性能。"Maximum Worker Threads"需要样置得比服样器曾样到的最你达数大样接更高。SQLServer硬件性能样控列表 --王成样样整理~样样样注明出自微样翻BI样拓者[url]www.windbi.com[/url]--原帖地址 性能样控列表 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行在同一运台服样器上的样用程序的样故。 性能样控列表 操作系样性能相样样 的配置你 操作系样版本 磁样分区格式是NTFS5.0样, NTFS据文件数加密样样是否样样? SP是否最新? 服样器是否有最新的微样样样的硬件样样, 服样器是否是独立的服样器, 样用程序样是响否样置样样后台样样最样化性能, 安全样样是否打样, 服样器的样样虚内存文件PAGEFILE.SYS有多大, 不必要的服样是否样样, 所有不必要的样样样是网否样样, 是否使用样毒样件, 在上表样入你的样果. 配置Windows服样器是容易的~但却样样 很很 样一部分性能样控将着重于基本的操作系样~样了样得最佳的SQLServer性能样去样化操作系样怎。 和SQLServer一样~Windows服样器也是自我样样的。但我样也可以象样样SQLServer一样~通样样 样操作系样提升性能。在提升操作系样性能的同样~来SQLServer的性能也得到相样的提升。 是否样样了性能最佳的操作系样? SQLServer可以行在运NT4.0~win2000和Win2003上~样里样样作样最将新版本操作系样的Win2003。样于NT4.0和Win2000~在其他的文章里样行将你介样。 如果想样样SQLServer最佳的性能~需要行在你运Win2003上~比它2000和4.0提供了更多的性能改善~包括, , 更好利用Intel超样程CPU的能力。 , 使用Intel芯片最多可支持32个CPU和64G的内存~使用Itanium芯片最多可支持64个CPU和512G的内存。 , I/O通道和磁样I/O性能得到充分提升的同样~少了减大量的I/O样求所需要的CPU样源。如果样样升样到你没2003~尽吧它会快升样。更快更容易的提升SQLServer的性能。 磁样分区格式是NTFS 5.0样? 如果的服样器是你新的~Win2000或Win2003也是最近安装呢的~帽所有的磁样都是使用NTFS5.0格式化的。但是~如果服样器很运老~且行的是NT4.0~磁样在升样到Win2000或2003后有没重新格式化~磁样格式可能样是NTFS4.0。 样然NTFS5.0和4.0有没太多的不同~但升样也是样得的。NTFS5.0包括一些新的增强性能~样意味着在文件样样样更少的找会磁样~通常磁样样更会快。在Win2000和2003以前~一些DBA日将志文件所在的磁样或者磁样样列用FAT格式化~因样比它NTFS4.0稍微有些性能提升。在NTFS5.0下就不再是样样了~所以所有SQLServer的磁样都用NTFS5.0格式化以到最佳性能。 如果目前在达你Win2000下用NTFS4.0格式运你行的SQLServer~样于样样到你来NTFS5.0也样是困样的。如果是样样~我建真样不你担会你将必心~性能也不有太大的样害。但是如果NT4.0升样到2000~需要用你NTFS5.0重新格式化的你个你磁样以利用每一在服样器上能样样的样微的性能提升。 NTFS据文件数加密样样是否样样, 2000下的NTFS5.0支持文件加密和样样~在新安装的Win2000或2003服样器上样样两个缺省是样样的。样些特征确样在有限的样境下提供一些好样~却不能样SQLServer提供任何好样。事样上~ 使用一个两会极你或者都用大地样害性能。 正如所知~SQLServer样I/O敏感很~任何增加磁样I/O样样都影会响SQLServer的性能。文件加密和样样样然增加了磁样I/O样样~据文件不样数忙样都得被样样。所以样SQLServer文件不样是样样样是加密~都将极响你大地影性能。 如果作样DBA接手一个已样存在的SQLServer~样样你它又不太熟悉~样样看看是否有人样样地打样了任何一个它来会你样样。如果是~样样~样所有的服样器用样样~他样样样样是性能高手。 SP是否最新? 每一个SP都有一个响或更多的性能提升。因样微样样行了样化~或者修改了以前影性能的Bug。 微样样布sp的样候不要安装装~等样样完成后再安。 服样器是否有微样最新样样的硬件样样? 在多样合~我在很Win2000和2003上都看到引起的性能样样的老的有Bug的硬件样样。大多数情下和况网你你磁样或者样样样有样。 样样周期性的样样的服样器是否有最新的微样样样的硬件样样。可以去硬件厂网数况你厂网商的站样看~或者通样微样的升样服样。大多情下~在硬件商的站上能找没你尽很到新的样样~但样有样样微样的样样。我建样等待微样的样样版本。管提升性能重要~但样件的样定性也很重要。 Windows2000服样器是否配置样独立的服样器? Win2000或2003可以配置样独立的服样器或者域控制器。样了最佳的性能~SQLServer样样运行在一个独很立的服样器上。样是因样域控制器占用多服样器样源~SQLServer的性能就下会降。 样用程序样是响否样置样样后台服样最样化性能? 在Win2000里~控制面板里的系样样样的高样样样下~样样性能样样~可配置一你个响叫作“样用程序样”的样置。可以“样用程序”和“后从个台服样”中样样一去样化性能。样了提升SQLServer性能~样样样样“后你你台服样”~样样告样操作系样需要样先样理后台程序如SQLServer而不是前台程序。 在Win2003里~控制面板里的系样样样的高样样样下~样样性能下的样置按样~样样高样样样。在样里~你可以象在2000里那样样置可。即 你儿内也可以在样更改存样置样程序和系样样存二者之一。样了得到最佳的SQLServer性能~样样程序。样是告样操作系样样程序如SQLServer而不是系样样存分配更多的内存。 做完样些更改~可能需要重启服样器。 安全样样是否打样? 事样上~Win2000和2003能样样服样器上的任何一个确活样。样多安全样样样是样样的。样了最好的性能~不要打样外的样样~另会否样增加I/O样样~和SQLServer样争I/O。然~如果不得不打样当你~尽尽减响可能的限制以量少样性能的影。 服样器样样虚内存文件PAGEFILE.SYS有多大? 微样建样PAGEFILE.SYS文件样置样物理内存的1.5倍。正的确数运量需要依样于行的SQLServer。例如~如果在行你运你内全文索引服样~微样建样样置样物理存的3倍。 微样的建样是一理个决想样~定PAGEFILE.SYS大小的最佳途径是使用性能样样器样控Page File样象的% Usage样器的样是多少~然后数重新样置PAGEFILE.SYS的大小~最小样样稍微大于性能样样器样样的样样样~最大样比最小样大50M。 在Win2000中通样右样我的样样~样样性~样样属高样样样~样样性能样样样样样样虚内存下的更改按样~可以样置PAGEFILE.SYS的大小。更改后~需要重生启效。 在Win2003中~通样控制面板的系样样样的高样样样~样样性能下的样置按样~然后样样高样样样~样样样样虚内存下的更改按样~可以样置PAGEFILE.SYS的大小。 不必要的服样是否样样? 样了最佳性能~样样Win2000或2003系样任何一不需要的服样。样样样了个既内存也样样了CPU~ 从而全面提升SQLServer性能。 下面是一些操作系样服样;不全,~通常被样样是不重要可样样 的。其中一些服样也可不必安装另启你~外一些样置样“禁止”或“手样样”~ 样依样于服样器的 安装启启当和配置。一些服样样样在需要样样~所以样置样手样样~不再需要的样候样样。 , Alerter , Application Management , Clipbook , Distributed Link Tracking Server , Fax Service , File Replication , FTP Service , Indexing Service , Internet Connection Sharing , Intersite Messaging , Kerberos Key Distribution Center , License Logging Service , Logical Disk Manager Administrative Service , Messenger , Microsoft Search , NetMeeting Remote Desktop Sharing , Network DDE , Network DDE DSDM , Print Spooler Service (if you won't be printing from this server) , QoS RSVP , Remote Access Auto Connection Manager , Remote Procedure Call (RPC) Locator , Routing and Remote Access , RunAsService , Smart Card , Smart Card Helper , SMTP Service , Telnet , Utility Manager , Windows Installer , World Wide Web Service 通常~我样是样样样些服样~样的样样将它启当你你它型样置样手样。然如果需要任一服样~不必样样。 所有不必要的样样样是网否样样? SQLServer通常只需要TCP/IP样样 。移除SQLServer服样器上其他不必要的样样样可以通样网减少样网来减流量少样荷。 是否使用样毒样件? 样样的样毒样件占去大量的SQLServer样源~在SQLServer服样器上不建样用~尤其是在集群上。 如果你担你心病毒的样~可以每天在不用SQLServer样样行样程样描。SQLServer配置样样控列表 --王成样样整理~样样样注明出自微样翻BI样拓者[url]www.windbi.com[/url] --原帖地址 性能样控列表 SQL Server配置样置 是否高样样置? 是否需要重启? 缺省样 前样 当 affinity mask Yes Yes 0 awe enabled Yes Yes 0 cost threshold for parallelism Yes No 5 cursor threshold Yes No -1 fill factor (%) Yes Yes 0 index create memory (KB) Yes No 0 lightweight pooling Yes Yes 0 locks Yes Yes 0 max degree of parallelism Yes No 0 max server memory (MB) Yes No 2147483647 max text repl size (B) No No 65536 max worker threads Yes Yes 255 min memory per query (KB) Yes No 1024 min server memory (MB) Yes No 0 nested triggers No No 1 network packet size (B) Yes No 4096 open objects Yes Yes 0 priority boost Yes Yes 0 query governor cost limit Yes No 0 query wait (s) Yes No -1 recovery interval (m) Yes No 0 scan for startup procs Yes No 0 set working set size Yes Yes 0 user connections Yes Yes 0 在上表里样入你的样果. 大多数SQLServer配置样置不必更改 样一样~我样样样样性能相样的将与SQLServer配置样置。可以使用企样管理器或者系样样程SP_CONFIGURE样样些配置样行样置。 正如样样所样~大多情下~不样样数况你修改SQLServer的样些缺省配置。样是因样大部分缺省样能样大多数SQLServer提供最样的性能。糟糕你的是~如果不知道改样样些样是什样意思的样~反而可能影会响SQLServer的性能。 如果是第一次样理你SQLServer~首先样样了解各个个个跟配置的含样。然后一一的更改~缺省样比样看有什样样化。一旦定改样一配置的样了~接下就样样知道样什样要改样。如果你确个来你它 你找找你来不到原因~或者到了但原因不可信~那样需要修改回缺省样。接下象前面那样去配置每一样~以使其到最合适。 个达 本文着重于SQLServer2000~不样大多建样也适合数SQLServer7.0。在SQLServer7.0下样样采用样些建样前~需要你从SQLServer7.0的助文中样。 帮档确 SQLServer2000中共有36不同的配置 ~样里样样个着重于23性能有样的样样配置。 个与 样在样始 样始样看SQLServer的配置的最样样的方法是样的每服样器~在样样分你个运析器里行命令SP_CONFIGURE。 你会个看到样似下面的一表, name minimum maximum config_value run_value ----------------------------------- ----------- ----------- ------------ ---------- affinity mask -2147483648 2147483647 0 0allow updates 0 1 0 0 awe enabled 0 1 0 0 c2 audit mode 0 1 0 0 cost threshold for parallelism 0 32767 5 5 cursor threshold -1 2147483647 -1 -1default full-text language 0 2147483647 1033 1033default language 0 9999 0 0 fill factor (%) 0 100 0 0 index create memory (KB) 704 2147483647 0 0lightweight pooling 0 1 0 0 locks 5000 2147483647 0 0 max degree of parallelism 0 32 1 1 max server memory (MB) 4 2147483647 2147483647 2147483647 max text repl size (B) 0 2147483647 65536 65536 max worker threads 32 32767 255 255 media retention 0 365 0 0 min memory per query (KB) 512 2147483647 1024 1024min server memory (MB) 0 2147483647 0 0 nested triggers 0 1 1 1 network packet size (B) 512 65536 4096 4096 open objects 0 2147483647 0 0 priority boost 0 1 0 0 query governor cost limit 0 2147483647 0 0 query wait (s) -1 2147483647 -1 -1 recovery interval (min) 0 32767 0 0 remote access 0 1 1 1 remote login timeout (s) 0 2147483647 5 5 remote proc trans 0 1 0 0 remote query timeout (s) 0 2147483647 600 600scan for startup procs 0 1 0 0 set working set size 0 1 0 0 show advanced options 0 1 1 1 two digit year cutoff 1753 9999 2049 2049 user connections 0 32767 0 0 user options 0 32767 0 0 第一列“Name”是SQLServer配置样置的名~第称二列“minimum”可用的最小配置~第三列“maximum”是可用的最大配置~第四列“config_value”是样样的样置样;但可能是也可能不是SQLServer目前的样样行样~有些样置需要运启重SQLServer才有效~有些需要RECONFIGURE WITH OVERRIDE样样行后运才有效,~最后一列“run_value”是目前有 效的样置样。如果在最后一次你启重SQLServer后有更改任何样的样~最后列的样是相同没两将 的。 不幸的是~样些配置的缺省样在行运SP_CONFIGURE有列出。样了方没来它便~本文已列出样的缺省样。;样最样始的那表个, 怎样更改SQLServer配置样置 SQLServer的样些配置大多而不是数个径全部可以在企样管理器中样行修改。但是更样样的一途是行运SP_CONFIGURE命令去更改样些样~象样样, SP_CONFIGURE ['configuration name'], [configuration setting value]GO RECONFIGURE WITH OVERRIDE GO 注, configuration name指的是配置样置的名称称号来;样上表,。注意名必样用样引括起;或者是双号引~样依样于样样分析器的配置,。configuration setting value指的是样配置的具体数的样;不用样引号,。 一旦行完运SP_CONFIGURE命令~你运必样做下面的工作~要样行RECONFIGURE样样;用于常样样置,~要样行运RECONFIGURE WITH OVERRIDE样样;用于那些如果你会犯样了就样样你来你会与麻样的样置,~否样的更改不生效。样其样样样住什样样候需要用RECONFIGURE~样不如样住任何样候RECONFIGRE WITH OVERRIDE都适用得容易~来RECONFIGRE WITH OVERRIDE适合于所以的配置。如果用你企样管理器更改了样置~RECONFIGURE WITH OVERRIDE自样的样行~所以不会你必再去样行。 一旦更改完样~你数会即运大多的样置而不是全部立生效~有一些样在行RECONFIGURE后也不会启生效~除非重SQLServer的服样。 在完成本文之前~样样知道,样多配置于“你属advanced”样置。在使用SP_CONFIGURE命令更改样些样之前~你必样首先更改SQLServer配置中的一样~然后才能去更改那些配置。命令如下, SP_CONFIGURE 'show advanced options', 1 GO RECONFIGURE GO 样在行上面的你运你运代样后才能行SP_CONFIGURE更改那些来高样的SQLServer配置。 样在知道样更改样些你怎SQLServer配置样样了~下面看看它样和性能的样系。 Affinity Mask 当SQLServer在Windows服样器下行样~一运个SQLServer样程可以在CPU之样迁个移。样特征允样SQLServer同样行多样程~样样服样器可以在多运个个CPU之样样行更好的样样均衡。每一当个从个样程一CPU移到一另个CPU~样理器样存都要重样~大多情下影性能。 数况会响 在多于4个CPU的样荷繁重的服样器里~通样特定样理器行特定的样程提升性能。样少运来会减 样理器样存重样次~提升了服样器的性能。例如可以数你指定SQLServer只行在一些运CPU上~而不是所有可用的CPU上。 "affinity mask"样样的缺省样是0~样意味着SQLServer允样Windows样度算法样置样程的样和力。样句样样~是操作系样而不是SQLServer定样程行在决哪个运哪个CPU上~什样样候样程一将从个CPU移迁另个到一CPU。在一有个4个或更少CPU的服样器上~缺省样样最好的样置。样于多于4个CPU的不是样度繁忙的服样器样~样于最样性能样来来缺省样也是最好的样置。 但是样于多于4个CPU有繁重样荷的服样器样~来个由于一或者更多的非SQLServer程序和SQLServer同样行~需要运你将考样"affinity mask"样样的缺省样更改样一更个加合适的样。样注意如果服样器上只有SQLServer一程序行~使用个运"affinity mask"限制CPU的使用样会害性能而不是提升性能。 例如~假定服样器行了运SQLServer~多个COM+样象和IIS~服样器有8个CPU并很且是忙的。通样将SQLServer行的运CPU量数从8少到个减4~个SQLServer样程样在样样行在运4个CPU上~而不是8个CPU上。样少将减SQLServer样程在CPU样迁数减移的次~少样理器样存重样的样率~少减CPU使用率~而在的提升一些性能。从潜剩余的4个CPU将来运用行操作系样和其他非SQLServer程序~少样程减迁移~提升性能。 例如~一个8CPU的系样~使用SP_CONFIGURE命令样置SQLServer可以行的运CPU的样如下, 十样制样 允样SQLServer样程行的样理器 运 1 0 3 0和1 7 0, 1和2 15 0, 1, 2和3 31 0, 1, 2, 3和4 63 0, 1, 2, 3, 4和5 127 0, 1, 2, 3, 4, 5和6 配置一合适的个affinity mask样是不容易的~样样你参帮档你考助文以样得更多的信息。在样更改样样样的样后样样看看样置的样样性能是好样是。坏没你除了样样的方法~有更好的方法样的服样器样置一合适的个affinity mask样。 作样样控的一部分~如果样样你affinity mask使用的不是缺省样~样出原因。如果有好的找没答案~样样将修改样缺省样。 启用Awe 如果样在Win2000或2003的任何版本下行运SQLServer2000的样准版~或者是在Win2000或2003Server版下行运SQLServer2000的企样版~或者服样器的你内存少于4G~"awe enabled"样样将缺省样0~意思是AWE内存不被使用。 AWE;地址窗口样展,API允样在Win2000或20003 Advandced Server下~或在Win2000或Win2003 DataCenter Server下行的程序样样运超样4G的内存。SQLServer2000企样版;不是样准版,是AWE可用的~样样能利用服样器超样4G的内存。如果操作系样是Win2000或20003 Advandced Server~SQLServer2000企样版能使用高达8G的内存。如果操作系样是Win2000或Win2003 DataCenter Server~SQLServer企样版能使用高达64G的内存。 缺省地~在Windows 2000 and 2003 (Advanced and Datacenter)下行运SQLServer2000企样版~如果物理内存超样4G~SQLServer也不能样样超样4G的内存。样了使操作系样和SQLServer2000企样版利用更多的内存~需要完成2步样。 正的配置个确AWE内存支持依样 于服样器有多少你内存。本样上配置Win2000或Win2003;Advanced或DataCenter,必样在boot.ini文件的样行启添加下面的样句以打样AWE样样~然后重启服样器, , 4GB RAM: /3GB (AWE支持不被使用) , 8GB RAM: /3GB /PAE , 16GB RAM: /3GB /PAE , 16GB + RAM: /PAE /3GB样样用告样系样来允样SQLServer从Win2000和20003本身支持的4GB的内存中使用3GB。如果不你个指定样样样~SQLServer样样样使用服样器第一将个4GB内存中的2GB~样样就浪样了1GB的内存。 AWE内存技样样样用于超样4GB的内存~样就是样什样/3GB样样在的服样器上被用使用可能你来尽 多的内你存。如果的服样器有16GB或者小于16GB的内存~那样使用/3GB样样是重要的。但是如果的服样器有你大于16GB的内你存~那样不必使用/3GB样样。原因是因样样了使用所有样外的AWE内存~1GB的样外内存需要服样器通样/3GB样样提供。样句样样~如果的服样器有来你 大于16GB的内存的样~操作系样自身需要2GB的内来存管理AWE内你存~如果的服样器有16GB或者小于16GB的内存~那样操作系样置需要1GB的内存~允样SQLServer去使用外另1GB的内存。 一旦完成样步样~接下就是样置来"awe enabled"的样样1~然后重启SQLServer服样。只有样样SQLServerf才能使用服样器里样外的内存。 使用"awe enabled"样样需要小心一点~就是在打样样样样后~SQLServer不再样样管理内存了。相反~它会内使用所有可用的存;除留样操作系样的128M的内你存外,。如果要禁止SQLServer使用所有的内你存~必样样置"max server memory"样样;将来在后面做样样描述,限制SQLServer使用内存。 作样样控样程的一部分~要样样样样置的样是多少~是你个与否服样器的硬件和样件匹配。如果不匹配~相样地修改样样。 个 Cost Threshold for Parallelism 使用行去样行并SQLServer样样有一定的成本。样是因样行比并串行占用了样外的样样。但是如果并并行的好样高于成本样样的样~那样使用行样是样得的。 首要原样是~如果串行样行很没并来估并快~就有必要考样用行完成~样可能的行所必样的样外样样也样比会串行样得多。 缺省地~如果样样样化器样样一样样少于个5秒就能样行完成~那样SQLServer不会并考样行。可以使用SQLServer样样"cost threshold for parallelism"来更改5秒样个数字。样样可以在0到32767之样任意配置。所以如果样置样样样你10~样就意味着如果一样样样行完成少于个10秒的样~样样样化器不会并考样样样样样样行行样理。 大多情下~不用改样样样。但如果样样样的数况你你你SQLServer行的行了多样样而并运很CPU仍然很个高的样~那样增加样样到一大于5的样;你你来找需要根据的情形通样多次样样的方法样一样个理想的样,~样样少使用行的样样 的会减并数减量~也少了CPU的使用率~样有助于提升服样你器的性能。 另个将一考样的样样是5减个尽数况会响少到一更小的样~~管大多情下可能影性能而不是提升性能。一更小的样在个SQLServer的据样样行多样样样样下可能是有用的~因样一更小数运很个 的样使样样样化器使用更多的行。 会并 在的服样器上使用一你个你修改的样前~需要样底地样样样样。 如果SQLServer样用一个CPU;要样是因样服样器上只有一个CPU~要样因样"affinity mask"样定的样,~行是不被并会考样的。 如果样样你"cost threshold for parallelism"样样被使用~出原因。如果不到找你找将答案~其改回缺省样。 Cursor Threshold 如果的你SQLServer不使用游样或者少使用~那样不要更改样样样的的很从缺省样-1。"cursor threshold"样样的样-1告样SQLServer同步的样行所以的游样~如果游样的样果集不是很大~那样是一理它个你想样。如果的SQLServer有样多游样或者所以游样的样果集都很大~那样同步样行游样不是最有效的方法。 "cursor threshold"样样样于行运来大的游样样除缺省样外样有2样可样置。一样是个个0~表它示所有的游样都步的样行~如果异SQLServer有样多游样或者所以游样的样果集都很会大~样提高效率。 如果SQLServer有些游样的样果集小而一些另怎呢大~那样我样样样样,样样情样下~我样可以况根据样些样果集的大小样样来SQLServer定一决个大小样。例如~考样把样果集小于1000行的任何游样作样小样果集的游样~而大于1000行的作样大样果集的游样~样样~我样可以样置"cursor threshold"样样的样样1000。 当"cursor threshold"样样的样被样样1000~样意味着样样样化器样于那些样果集小于1000行的游样采用同步样理的方式。而样果集大于1000行的将异采用步方式样理。 大多情下~样样样提供了最好的方数况个决式。唯一的样样就是需要定"cursor threshold"样的大小~样需要样行样样。但是正如所你你确你料~缺省样通常是最好的~如果定的样用程序使用非常大的游样且样行了样样以定更改~那样更改样样样的样有助于性能的提升而不是影性能。 并确响 作样样控的一部分~也需要知道你你游样样行的样率~样果集的大小。样样就可以样的服样器配置一个当你尽担最好的样。然量在服样器上不要使用游样~样样就可以保留缺省样而不必心游样了。 Fill Factor (%) 样样样个你填允样样建索引样更改索引的缺省充因子。缺省地~样样通常样0。0有点使人迷惑~因样它叶意味着索引样100,;不是0,,的被填叶充~但是中样索引样;非子样,有一些空样而不是被100,的样。样样样的填取样范样样0到100之样。 当没填会填个样建索引样有指定充因子的样样系样使用缺省的充因子。如果指定了一样~样建索引样使用样样而不是会数况你个缺省样。 大多情下~最好不要修改缺省样。如果需要一不同的样~在样建索引样指定可。即 作样样控的一部分~注意样样是不是不同于缺省样0。如果是~出原因。如果不能到样什样找你找 要修改缺省样或者有更好的原因~其改回没将缺省样。 如果样样已样被更改~样样住任何索引在样建样都使用样更改后的会个你确个填缺省样。样样~需要重新定样些索引是否适合样充因子的样。Index Create Memory (KB) index create memory样样用控制索引样建来内数排序样所需的存量。默样样是0~样意味着SQLServer样样定样确内数几况存量。在乎所有的情下~SQLServer定会确内存的最佳样。 但在某些情下~特样是样于况非常大的表~可能样致SQLServer样样~因样大索引样建会很慢或根本不样建。如果遇到样样情~需要样置一你况你个Index Create Memory样样的样~管不得不尽你样样直到到最佳样样找止。样样样的合法范样在704到2147483647之样~是它SQLServer在样建索引样能提供的样~样位是KB。 样住如果样要改样样样样~样你确个内你存样只分配样索引样建而样其他的操作不起作用。如果的服样器有更多的内你没内存~那样样不是样样。但如果的服样器有太多的存~更改样样样的样可能样SQLServer的其他样生一些消极响你影。可以考样样在样建或重建大索引样更改样样样~其他样样改回缺省样。 和其他的样样一样~如果样控样样样样样不同于你找找没缺省样~出原因~如果不到原因或者有更好的原因~其改回将缺省样。 Lightweight Pooling 缺省地~SQLServer7.0和2000是以“样程模式”行的。样就是样运SQLServer使用UMS;用样模式样度,样程行用样程序。运SQLServer样每程序样建一将个个UMS样程~每一样程在个SQLServer忙样样流样理样多用样程序。样了到最佳效达率~UMS样样平衡每样程的用样程序个数量~样样在服样器的所有CPU之样有效的均衡所有的用样程序。 SQLServer也有一样化个况模式叫样程模式。样样情下~SQLServer样每一样理器使用一样程个个 ;象样程模式一样,~但不同的是每样程里行多样程~正在行的一样程样于服样器上个运个当运个 其他行的运SQLServer样程有样先样样的样候使用样程。没想想在某些样境下~样程作样样量样样程~样它的管理比样准的UMS样程用更少的样样。使用SQLServer的配置样样"lightweight pooling"来样启和样样样程模式~缺省是0~样程即模式是样样的。 所有样些意味着什样,象所有的事情一样~在一样呢另运模式下或者一样模式下行样是有其样成者和反样者。一般样~下列所有件成来当条立样~样程模式才是有利的, , 服样器上有2个或更多的CPU;CPU越多~效果越大, , 所有的CPU大多样样都行在接数运近最大样也就是90-100%之样 , 服样器上有样多context switching事件;性能样样器样系样样象,Context Switches/sec,。一般样~每来秒超样5000个context switches 事件就被样样样高了。 , 服样器正在样生使用少很没或者根本用的分布式样样或者样展存样样程。 如果以上都样足~那样将"lightweight pooling"样样打样~也样会看到5%或更大的性能改善。 但是如果不样足任一件~条将"lightweight pooling"样样打样样样上可能降低性能。例如~如果你的服样器大量使用了分布式样样或者样展存样样程~那样打样样样样明地引样样样~因样他样不能使用会确 到样程~即SQLServer不得不回在样程来从响模式和所需的样程模式之样切样~而影性能。 和其他样置一样~如果样样样样置不是你找另个条缺省样~样样去到原因。外~样样上面四件是否存在~如果是~打样样样样~否样使用缺省样0。 Locks 每当SQLServer样定一样样样~样条会内存样在存中。缺省地~"locks"样样的样是0~样样即内存是样样管理的。SQLServer部可以样样内保留2%到40%的可用内另存。外~如果SQLServer定样样确分配样外的内会将会内会存引起操作系样样的样面样整~那不分配存样样~相反样了禁止样面样整分配样操作系样。 大部分情下~况允样SQLServer样样管理样~保留其缺省样。如果配置样你内存;合法样在5000到2147483647 KB之样,~那样SQLServer不能样样管理样部分内存~样可能引起SQLServer的 其他区域的性能降低。 如果得到一样样个数你消息,超样最大的可用样量~那样可以有以下样法, , 样样样样看是否使用了样多的样。如果是~性能可能因样样用程序样而会并响坏受到影。比改善样样更好的方法是样跟内踪到的样分配更多的存。 , 少服样器上的样用程序减数量 , 样服样器添加更多的内存 , 样样数个个内量样置一样高的样;基于样样,。样是一最少令人样意的样样~和样样分配存以阻止SQLServer样了其他目的而占用内存一样。 最大努力地不要使用样样样。如果样样样样样样置的不是个你个找你找缺省样~出原因~如果不到原因或者原因太少~就改回缺省样。 Max Degree of Parallelism 样样样允样行打样你将并、样样、或者样某些CPU打样~但不是样全部的CPU打样。行并指的是样样样化器使用多于1个CPU去样行样样的能力。缺省地~行是打样的且可能多的使用服样器的并并尽 CPU;除非被affinity mask样样限制,。如果的服样器只有你1个CPU~样样样被会忽略。 样样样的个缺省样是0~样意味着并行是样所以可用CPU打样的。如果改样样样样你1~行样所有并CPU就样样了。样样样个你并个允样样置行能使用多少CPU。例如~如果的服样器有你8个CPU~而只你并运想样行行在其中的4个CPU上~那样样样样置样将4。管样样样是可用的~而尽个想使用它来真确正提高性能却是不定的。 如果行是打样的~正如多并CPU的服样器缺省那样~那样样样样化器样每样样使用样行的可能将估个并 性~样样一些样样。在样多会来OLTP服样器上~样样本身通常不会并运采用行去行。样包括样准的SELECT、INSERT、UPDATE、DELETE样句。因此~样样样化器在样每一样样是估个并否样得用行只是在浪样样样。如果了解到的样样可能不需要行~可以通样样样样样样样得性能的你你从来并你来 一点提升~因样不样样样样样样行。 会估并 当并你并然~如果样样本身能利用行~不需要样样行样样。例如~如果OLTP服样器上行了样多运相样样的子样样~或其他样样的样样~那样可能需要行样你将并你个帮着。需要样样样样样看是否有所助。 大多情下~因样样多服样器行数况既运OLTP又运行OLAP样样~行样样并你保存打样。作样性能样控的一部分~如果样样行样样你并找另确或受限~出原因。外~样样服样器是不是基于OLTP的。如果是~样掉行也样更合适~管需要通样样样并尽你看样样是否有助于性能的提升。但如果服样器既运行OLTP~又运行OLAP~或者大部分OLAP样样~那样样了全面提升性能最好行打样将并。 Max Server Memory (MB) & Min Server Memory (MB) 样了最佳的SQLServer性能~需要定的服样器样样行了你确你运SQLServer~而用其他的样用没程序。大多情下~数况"maximum server memory" 和 "minimum server memory" 样样样置样缺省样可。样是因样即缺省样样了最佳性能允样SQLServer样样分配内你存。如果修改了最大或最小内你会响存样置~可能冒影性能的样样。 另一方面~如果SQLServer不能行在自己的运它物理服样器上;其他程序和SQLServer行运在同一台物理服样器上,~需要你内尽考样更改最小或最大存样~管样通常是不需的。 样我样仔样研两个究一下样样样。 "maximum server memory"样样~样置样当缺省样2147483647;样位MB,~意味着SQLServer样样 管理内即存~SQLServer可能使用可用将尽内内存;除留样操作系样一些必要的存外,。 如果你想要SQLServer不使用服样器上所有的可用内你内存~能手样样置最大存。SQLServer能使用的指定的内存在4;你你内能样入的最小样,到服样器上最大的物理存;但不要分配服样器上所有的内存~因样操作系样也需要,。 样当SQLServer必样和同一台服样器上的其他样用程序共享存内你~或者想人工保持SQLServer使用可用的内你你存~才需要去改样缺省样。例如~如果其他的样用程序比SQLServer性能重要~那样可以限制你SQLServer的性能。 如果样样你手样样置"maximum server memory" 样样的样~可能遇到样在的性能样样样样。第你会两潜瓶 一~如果分配了你内太多的存样SQLServer~而样于其他的样用程序和操作系样有足样的没内存~那样操作系样样无样样地要做多的样面样整~样很将你降低服样器的性能。而且~如果使用了全文索引服样~你它内它内必样样留出足样的存。的存不是样样的分配~象剩余的SQLServer内存一样~要行运它当内必样有足样的适的存。 "min server memory"样样的缺省样0;样位MB,~意味着SQLServer样样管理内即存~SQLServer按照需要分配将内将随存~最小样着SQLServer的需要而样化。 如果更改"min server memory"样样的样而不样置样缺省样0~样不意并味着SQLServer自样样始使用样最小的个内内将存样置~样多人是那样样样的~但是一旦由于需要超样了样置的最小的存~那样永样不再小于样最小样。 个 例如~如果样置了最小样样你100MB~然后重启SQLServer~SQLServer不会即立使用100MB样最小的个内存。相反~SQLServer样样使用需要的内你从存。如果不需要100MB~那样将从不使用会100MB。但是如果SQLServer使用超样了100MB~而以后不再需要100MB~那样样100MB成样将SQLServer分配的最低内没将存。因此~有理由"min server memory"样样的样不样置样缺省样而改样其他样。 如果服样器上只有SQLServer~根本没有理由去使用"min server memory"样样。如果样行了运其他程序~改样样样可能样得一些微小的好样~但定样置样何样是困样的~且样性能的提会决很并个 升基本上可以忽略。 如果样样样些样样的样不是你找找将它缺省样~出原因。如果不到原因~或者原因站不住脚~改回缺省样。 Max Text Repl Size "max text repl size"样样可以样定在样行样个INSERT、UPDATE、WRITEEXT或者UPDATEEXT命令样可以增添到样制字段的 text 和 image 据的数大小;样位样字样,。如果你没没用到样制或者样制有用到text、image字段~那样样样样不用修改。 缺省样是65536~最小样是0~最大样是2147483647;样位样字样,。如果样text、image据有数很当数多的样制~样据超样64K~样样你与你将考样增加样样。但样些样置的最大样一样~不得不用各样样去样样看哪个你样在的特殊样境下效果最好。 作样样控的一部分~如果不使用样制~ 正的样只有你确你缺省样。如果缺省样被更改~需要样样text、image据是数没否被样制。如果有~或者如果小于64KB~那样改回缺省样。 Max Worker Threads SQLServer的配置样样"max worker threads"被用定操作系样上的来决sqlservr.exe样程允样有多 少工作样程可用。个缺省样是255个工作样程。SQLServer自身使用一些样程~我样不样样样些样程。样里将焦点放在那些由用样样建样程上。 如果有多于255个用样样接~那样SQLServer使用样程将即个个池~多于一用样样接使用一工作样程。管样程尽减池少了SQLServer使用的系样样源~也能在样样它SQLServer的用样样接之样增加样源样~而影性能。 争从响 样了出的找你SQLServer行了多少工作样程~使用运个你数企样管理器样样目前服样器的样接量。样于每一个SQLServer样接~都有一工作样程被样建~最个高到"max worker threads"样样样置工作样程样。例如~如果有数100样接~那样有个100工作样程被样建。但如果有个将500样接~个但只有255个工作样程可用~那样只有255个工作样程被使用~其余打样的样接共享样些有限的工作样程。 如果的服样器有足样的你内你存~样了得到最好的性能~要样置"max worker threads" 样样的样样你达数服样器曾样到的最大的用样样接再加5~但样常样的建样个会儿存在一些局限~正如一我样看到的。 前面已样样样~"max worker threads"的缺省样是255。如果的服样器你从未超样255个样接~那样不必改样样个缺省样。样是因样工作样程样在需要的样候样建。如果样有50样接到服样器~那样样只个将 有50工作样程~而不是个255样个缺省样。 如果的服样器通常你超样255个样接~而"max worker threads"的样置仍然是缺省样255~那样SQLServer使用样程将两你池。样在样入了样的局面。如果增加"max worker threads"的样一样个程一样接~个SQLServer将内你很占据样外的样源;更多的存,。如果的服样器有多未被SQLServer或其他程序使用的内存~那样增加"max worker threads"的样提升将SQLServer的性能。 但是如果有外可用的没另内会响存~那样添加更多的工作样程影SQLServer的性能。在样情况下~允样SQLServer使用样程池来提供更好的性能。样是因样样程池使用更少的样源;比起不使用样程池,来极会争个。但是~消的一面~样程池在样接之样样生样源样的样样。例如~共享一样程的样接同样样行一些任样的样候样两个会冲个个生突;因样一样程同样只能样一样接服样,。 那样样样样,样而怎呢你言之~如果样的服样器通常少于255个你样接~保留缺省样样置。如果的服样器超样255个内样接~且有更多的存~那样考样增加"max worker threads"样置的样接数再加5。但如果有没内太多的存~保留缺省样。样于有成千上万样接的SQLServer样~需要通样样样来你找到在样外的工作样程使用样外的样源和样相同工作样程的样接争之样的分界样。 也样正如所你个你期望的~在使用样样样之前~要在改样样样置的前后样样服样器的性能~看看SQLServer的性能是提升样是下降了~而定一合适的样。 从确个 作样样控的一部分~按照上面样出的建样样置样样样的样。 来 Min Memory Per Query 当个运运一样样行样~样了样行得更快更有效率~SQLServer尽内量分配合适的存样样样。缺省地~"minimum memory per query"样样分配的是1024KB~样是每样样行的最小样个运内存。"minimum memory per query"样样可以在0到2147483647 KB之样样置。 如果样样需要更多的内运内存行才有效率~且有可用存~那样SQLServer自样的分配更多的内存样样样。因此~通常不建样修改样样样的缺省样。 在某些情下~如果况SQLServer比有效率的行有更多的运内个存~那样增加样样样的样到一更高 的样;如2048KB或更高,可能提升某些样样的性能。一旦服样器有更多可用的内存;本样上~样些内没存有被SQLServer使用,~那样提高样样样的样能全面提升SQLServer的性能。但如果没有~增加样样样的样可能降低性能而不是提升。 Nested Triggers 样配置样样的影性能~但不在常样的方法里。个确响缺省地~"nested triggers"样样的缺省样样1。意即运触触可以行嵌套样器;样器最多能样嵌套32样,。如果其样置样将0~那样不行将运触嵌套样器。样然~通样不允样嵌套样器~能样触灵全面提升性能~但要以样用程序的活性作样代价。 样保留样样样的缺省样~除非你触靠触要防止样样人样使用嵌套样器。一些依嵌套样器的第三方程序如果样样嵌套样器也行触会运失样。 Network Packet Size (B) "Network packet size"决定SQLServer通样样网与会客样端样样样信息包的大小。缺省样是4096字样~样样的最小样最大可样样512字样~最大样依样于使用的样样样所网支持的样。 理样上~改样样样以或多或少适样据数数很包的大小可以提升性能。例如~如果据小~平均小于512字样~更改缺省的4096字样到512字样可以提升性能。或者~如果在做你数大量据的移样~如大批量的样入或在样理大量的TEXT、IMAGE据~那样数会增加样样以大于缺省样~样样样送样少的包~而提从高性能。 理样上~样听来很哪个你很没数起好。样样上~不管~看到的性能提升少。样是因样有考样平均的据大小。某些情下据小~一些情据况数很另况数很个没大。因此改样样样样的缺省样通常有太多的助。 帮 作样样控的一部分~小心样样每一不是个找缺省样的样置。如果不到答案~改回缺省样。Open Objects "Open objects"指的是SQLServer能同样打样的样象;包括表、样样、默样样、触样器和存样样程,的数量。样样样的缺省样是0~意味着SQLServer样了样得最好的性能样样的增加或减少样样。 很况会个数况内少情下~可能得到一信息样打样的样象超样可用的量~通常样样情是服样器存全被使用了。解的最好方法是决它内减减数增加服样器的存或者少服样器的样样~如少服样器样样的据样的数量。 如果上面样样都不样足样样~可以两个个当个双手样配置样样样样一适的最大样。样样样是方面的。首先决当内将定适的样需要太多的样样。其次~样打样样象分配的任何存被其他的SQLServer需求使用~在的潜体当当你你会运会降低服样器的整性能。然~改样样样样的样的样用程序也行~不样样慢。避免改样样样样的样。 当你样控性能样~如果样样样样不是0~ 要样是有人犯样样需要样正~服样器的硬件太小~样它添加更多的内另个很存~要样是服样器工作需要移到一不是忙的服样器上。 Priority Boost 缺省地~SQLServer样程和服样器上其他样用程序有相同的样先样样。也就是样~有样的样用程没个序样程在样得CPU样样样有比其他样程更高的样先样。 "priority boost"配置样样允样改样。缺省样是0~即SQLServer样程和其他的样用程序样程有相同的样 先样。如果改样1~那样SQLServer有比其他样用程序样程更高的样先样。本样上~样意味着SQLServer比同一服样器上的其他样用程序样程有第一样先样使用CPU样样。但是样能提升真SQLServer的性能样, 样我样看看一样情形。首先~假定服样器不只行运SQLServer~也有其他的样用程序;样了最好的性能不推荐真很样样使用~但样世界有可能存在样样情形,~且有多的CPU可用。如果是样样情形~样SQLServer一更个会怎呢高的样先样样,不样样。如果有样多可用的怎很CPU~提高样先样并不意味着什样~和其他程序相比~SQLServer也样样得一些毫秒样的样样~但我样疑你能注意到样样。 个区 样在样我样看看上面样个熟悉的样景~但是假定CPU事样上都耗尽况了。如果是样样情~样SQLServer一更个当会运运高的样先样然行得更快~但是只有以其他样用程序行得慢样代价。如果样是需要的~那样样样。但更好的解方法是提升服样器上你没决CPU的能力或减少服样器的样样。 但如果SQLServer行在一有其他样用程序的样用服样器上且有多样运个没很剩的CPU可用,呢样样情下~提升样先样有用~因样有况没没CPU样争很;除了部分操作系样样程外,~而且有多CPU样可用。 最后一样情形~假如SQLServer行在样用服样器上~且运CPU没个有空样~样更高的样先样是一零和游样~样样做在的样一部分操作系样以潜极响消的影。而SQLServer样得的性能却少。 很正如所样~样样样不样得你个档个几个个修改。事样上~微样有文样明使用样样样的样样~样样使用样样样甚至少很令人样意。 如果在的样控列表里样样样样样打样~出目的。如果打样目前有任何样样~可能有样样你找它没你会没 的打样~但是我建样改回它缺省样。 Query Governor Cost Limit "query governor cost limit"样样样置样样所能行的最运数几个高样样限制~样是我样可的少SQLServer配置样样之一。例如~假定服样器的一些用样喜样行样样样的样样~样正你运真会你降低服样器的性能。通样样置样样样~能你运禁止行任何超样300秒;或者任何定的你确数,的样样。缺省样是0~一样样行多样样样都样有限制。 即个运没 你个个并估运估你样样样样样置的样是一近似样~且基于样样样化器样出的样样行的样样。如果样样比样提供的样要多得多~样样根本不行~会运个反而样生一样样。样能样样大量的有用的服样器样源。 另你运将真一方面~如果用样不得不样了完成他样的工作而由于他样不能行样样~他样正感到不快。也样你帮写考样样做的是那些用样更有效率的样样。样样~大家皆大样喜。 不象我的其他多建样~如果的样控列表里样样很你大于0~好。只要用样不很个抱怨~样就是一好的样理。事样上~如果样置样0~样儿个考样增加一样~看看样生了什样。只是不要加得太小。可以考样一样始加600秒~看看样生了什样。如果样样~然后样样没500秒~依此样推~直到样样用样样你始抱怨位置~然后改回前一样。 个 Query Wait (s) 如果SQLServer很断内它将内忙且在不使用更多的存样源~大量占用存的样样;如那些涉及排序和哈希操作的样样,排样等待~直到有足样的内运它况没内运存行样。有些情下~有足样的存行样~最样它会个个运超样~样生一样样消息。缺省地~一样样行的样样如果估它运超样样样样化器样样样行要花样的样样的25倍后~样样样将超样。 样样样的最好的解方法是样服样器个决内减它你添加更多的存~或者少的样样。如果不能样样做的样~一可样样就是使用个"query wait"配置样样~管尽它很本身有多样样。缺省样是-1~等待的样样如上所述~然后引起超样。如果要样样你很大以便样样不超样~可以样置"query wait"一足样个大的样。正如也样你你将决猜到的那样~不得不通样样样定样样。 使用样样样的样样在于有样样一样样的事样可能个个会会争保持样~样引起死样或者其他一些样样的样样~最后出样一比样样个超样更大的样样。因此样样样不建样修改。 如果在的样控列表里样样样样样有样置样你没找没缺省样~出原因。如果有好的原因~样改回缺省样。但是如果有人样底考样样~且也有样样样样样~那样它你没状考样保持样。 Recovery Interval (min) 如果有一有多你个很INSERT、UPDATE、DELETE的活样样繁的OLTP服样器样用程序~"recovery interval"的缺省样0;意味着SQLServer自样定适的决当恢样样样,也样不合适。如果正用性能样样器样样服样器的性能~注意有一样样的你你个100,的磁样写活样的周期;样生在样样点行运你个期样,~要样置样样样一更高的样如5或10。表它示SQLServer重启数后恢样据样所需的最大分样。数缺省样是0~样样上~样表示每据样的个数恢样样样不超样 1 分样。 使用样样样的一在的原因是如果服样器是另个潜OLAP或数据样样样用服样器的情形。在样些样例里~有多只样据样通常一很数从个短小的恢样样样里得不到好样。 如果的服样器不你匹配上面的任一建样~那样保留缺省样通常是最好的样样。 通样延样样样点样样~可以少减SQLServer样行样样的次~如果有效~少数减SQLServer的一些样样。在性能和样SQL花样的样样之样到一找个减折中方案需要多次样样。样了少下次SQLServer重启需要的恢样样样需要配置一可能小的样。样是因样每次你个尽SQLServer服样样样~样样自样启它将恢样样程~样样样的样样得越大~恢样样程花样得样样就越样。不得不定在性能和你决找个恢样样样之样到一折中的方案以便最适合的需你求。 作样样控的一部分~要样样样样目前的样置和在的使用。样于你估它潜繁忙的OLTP服样器样~在来你决帮你你定增加样样样的样看看是否有助之前要做大量的样样。样样是重要的。但如果的服样器是OLAP或数个很决据样样样用服样器~增加样样样的样是一容易做出的定。 Scan for Startup Procs 如果得到正的配置~确SQLServer服样样样有能启找运你启力去样自样行的存样样程。如果想在样样做一些特定的操作样是有利的~如样入一些特定的存样样程到样存里以便当它用样样始样样服样器样已样是准样好的。 缺省地~"scan for startup procs"样样样置样0~意味着启你没启样样不样描存样样程。如果有任何在样样要样的启个找存样样程~那样样是一样而易样的样置。不必花样样源去样那些不存在的存样样程。 但如果有一你个个启或多存样样程想在服样样样样行~那样样样样需要样置样1~表示启样样样描。 如果在的样控列表里样样样样样的样样你你1~样样看是否有任何服样器样样要样行的启没存样样程 。如果有~样样样的样改回将缺省样。 Set Working Set Size 当你要更改SQLServer样样使用的最启内大和最小的存样就要用"set working set size"样样。样样个 样也助帮你禁止任何样面交样。 样样样的缺省样样0~不使用样样样。要打样样样样~即个将它必样样置样1~且~最小的并内存和最大的内来内内存要样置样相同的样。样样用保留等于服样器存样置的物理存空样。 和样多样样一样~样样样通常也不个必使用。样在服样器是SQLServer样用服样器且工作量大很很样有多可用的内即你潜没存样才考样。使那样~任何性能的提升也是最小的~样要冒在的有留样操作系样足样内存的样样。样样是样样样成功使用的样样。 如果样样样样置样不是缺省样的外的样~样样最小的另内内个将存和最大的存是否相同~否样样样样不样会正的工作。如果确条并存在上面提到的件且样样样底的样样~那样考样保留样置。否样~改回缺省样;不要忘样改回所有相样的3样置个,。 User Connections 缺省地~SQLServer样分配需要的用样样接。样数内允样那些需要样接的用样样接~同样最小化存的使用。当"user connections"样样样置样缺省样0样~用样样接样样样置。事样上在所有的样数个境下~样样置都样理想的样置。 如果改样了样样样的样而不样置样你你缺省样~是在告样SQLServer分配一将个你数它指定的样接样样~不多不少。也样每样接分配它将个内个存~不样样样接是否使用。由于样些样样~且SQLServer能样样有效的样理样些任样~有理没由改样样样样的缺省样而样置样其他样。 如果的样控里样你示样样不样0~其改回将0。甚至都不要样样什样。 SQLServer据样样置性能列表数 --王成样样整理~样样样注明出自微样翻BI样拓者[url]www.windbi.com[/url]--原帖地址 性能样控列表 数当据样配置样样 缺省样 前样 auto_close off auto_create_statistics on auto_update_statistics on auto_shrink off read_only off torn_page_detection on in 2000 off in 7.0 compatibility level 80 for 2000 70 for 7.0 database auto grow on transaction log auto grow on 样入你的样果到上表 每一据样都需要样控 个数 作样性能样控的一部分~需要样样服样器上的每一据样和一些基你你个数数本的据样样置。和样套样控列表的其他样控相比~样样样样控是最容易的。样了方你会你将你个数便~可以要样控的每据样做一上表的个副本。 作样据样样置样控的一部分~我样数来数数看看据样样样和据样配置样置之样的不同。在以前的性能样控列表中~我样样样着眼于那些直接和性能相样的据样样置~而数忽略了其余部分。 数数它据样样样和据样配置样置都能使用企样管理器样看和修改;我偏好~因样样样,~或者用ALTER DATABASE命令修改。外~样样于据样样样而另数言~样可以使用sp_dboption系样存样样程去样看和修改样~但微样正样样它个逐步淘汰样命令~到SQLServer2000样止~以后可能不再支持。 数数数据样样置性能样控列表的第一部分是据样样样~第二部分着眼于据样配置样置。 样看数据样样样 在样一部分~我样样样将响众数察看以某样方式影性能的多据样样样中的6。个察看目前样置的最好方法是用企样管理器~步样如下;假定用的是sqlserver2000,, • 在企样管理器里~展样所有的据样。 数 , 右样要你数属察看的据样~样样性。 , 在性样样里样样样样样样。属框 从你数个数儿样里可以看到所有相样的据样样样。样住不是每据样样样都能在样看到~但是我样感样趣的所有的样样都列在样了。样我样儿与它怎响看看性能相样的那些样样~样是样影SQLServer的性能的。 Auto_Close 样据样样样是样个数SQLServer7.0和2000的面桌它将会版本样样的~而不是样服样版本。因此~不被打样;缺省也不是打样的,。样样样所要做的就是在最后一据样用样据样样样接样样样据个数从数断数 样。一样接在据样样样后要当个数它数会求样样样~据样不得不重新打样~样花样样样。 样样有样样就是,如果据样被样个数况数会断繁的样样;样是样常的情,~那样据样不的样样重新打样~样样样用程序或用样在样接样会很响大的影SQLServer的性能。 作样样控的一部分~如果样样样样样被打样~而你个你桌你找又使用的不是面版~那样需要样出原因。如果不到原因~你找很或者原因少~那样样样样样样。 Auto_Create_Statistics 当auto_create_statistics打样样;缺省也是打样的,~样样的Where子句用到的所有列上自样样会建样样。样样生在样样被样样样化器第一次样化样~假定样列样有样建样样。所有的列样样能没极帮大的助样样样化器~以便它个划能样样样样建一样化的样行样。 如果样样样样样~那样样失的列样样不自样样建~样就意会当划味着样样样化器不能样样样样生样化的样行样样~样样的性能将响你你即受到影。如果原意~仍然可以手工样建列样样~使样样样被样样。 使用样样样正有样面的影。真没响将运很恰好第一次列样样被样建~样在样样第一次行前花短的样样~从潜运运将而引起样样在的花样更样一点的样样行。但一旦列样样已样样建~每次行同样的样样样~都比第一次不存在样样样更有效率。 作样样控的一部分~如果样样样样样被样样~需要出原因。如果不能样到原因~你个你找你找或者原因很个少~那样打样样样样。 Auto_Update_Statistics 样了使样样样化器做出更快的样样样化决确它数策~列和索引样样需要更新。保的最好方法是打样据样 样样auto_update_statistics;缺省也是打样的,。样能助帮确帮确保样化器样样是有效的~助保样样运行样是被完全样化的。 但样样样不是个当万能的。SQLServer据样在数繁重的样样之下~有样auto_update_statistics可能在不恰当个的样候更新一大表的样样~如一天最忙的样候。 如果样样你auto_update_statistics在不恰当运你它数的样候行了~也样要样样~然后在据样不繁忙的样候手工更新样样;使用UPDATE STATISTICS,。 但是样要考样的一点是如果样样auto_update_statistics样样样将会生的事情。样样样样样也样在一天中不恰当运来减你它你确的样候不行样样更新少服样器的样力~也能引起的一些样样得不到正的样化~从另而在繁忙的样候引起服样器的一些样力。 象其他样化样样一样~可能要通样样样你来个你看样样样样样是否样的样境更有效。但是首要的原样是~如果的服样器不是最你繁忙的~那样打样样样样也样是最好的样样。 Auto_Shrink 一些据样需要数数旧数来周期性的收样以便样除据样的据样放磁样空样。但不要企样用auto_shrink数数据样样样~样可能浪样不必要的据样样源。 auto_shrink样样缺省是样样的~样意味着只有一方法去样个数放据样里的空的空样~那就是手样去做。如果打样样样样~SQLServer每将隔30分样样样看看是否需要收样据样。样样不样使使用的样源上升数 ;样些样源本来当可以在样样得到更好的利用,~也可能auto_shrink样程在最繁忙的样样样样工启并作样引起不可样料的样。 瓶 如果需要你数周期性的收样据样~使用DBCC SHRINKDATABASE或者DBCC SHRINKFILE命令手工样行样一步或者使用SQLServer代理或样建一据样样样样在不个数划忙的样候样行周期性的样度。 作样样控的一部分~如果样样样样样是打样的~需要出原因。如果不到你你找找很或者原因少~那样样样样样样。 Read_Only 如果一据样样样了只样目的~如样了样表~那样个数考样样置read_only样样;缺省是样样的,。样将除去那些样源利用多的样~在的样潜它运你很数流提升上面行的样样的性能。如果少更改据样~那样样样样样样~要更改的样候当再打样。 Torn_Page_Detection 由于SQLServer的据样面数;8K,和NT Server或者Windows Server;512字样,是不同的尺寸~可能在样源故障或者磁样样样、物理磁样样样样据样样得不完整。数会 下面是原因。每操作系样一当写个SQLServer的8K数数个据样到磁样样~都必样把据分成多512字样的样面。在第一个512字样的据完后~数写SQLServer假定整个8K的样面已被成功写入磁样。所以如果在8K的SQLServer样面分成的所有512字样的样面写入磁样之前出样了样源故障~那样SQLServer不知道样生了什样事情。样被样样称残缺样。 正如所你坏数坏个数没将数坏想象的那样~样样了据样面~也样了整据样。有样法据样样的原因样样到残个份份个确缺样~除非通样一已知完好的样样恢样。防止样样样的最好的方法之一就是样保服样器有一样用样个个池。但样不能防止所有的样样~因样一有缺陷的磁样样样也能引起样似样样;我曾样样样,。 如果你担心SQLServer据样出样数残你缺样样样~能样SQLServer告样他样是你尽否样生;管样不能防止样样样生~也不能事后修正样它个数,。有一据样样样叫做"torn page detection"能在据样样打数样或者样样。如果样样样打样~且如果样样了残数会你没缺样~那样据样被样样样不完整~且基本上有什样样样余地只能用最你份你数近的样恢样的据样。 在SQLServer7.0里~样样样个你你个个数缺省是样样的~且必样样要在上面用样样样的每一据样上打样。在SQLServer2000里~样样样个数默样是样所有据样打样的。 那样最大的样样是,样什样不只打样而样得它呢个会响安全,样样样的原因在于打样样样样影SQLServer的性能。 样住的不要你你太多~样样样住一点~如果的SQLServer有很高性能样样~那样样样样样样可能有一明样的样。作样一个区个DBA~你决你必样在是否使用样样样上做出定~样的特样的样境做出决定。 样看数据样配置样置 样一样我样只样将个数它怎响它看三据样配置样置~样样样是样影性能的。样看样最好的方法是用企样管理器~参考下面的步样;样些步样适合于SQLServer2000,, , 在企样管理器里~样示你数的服样器里所有的据样 , 右样要样你数属看的据样~样样性 , 性样样里~样样样样样样样从属框数数看兼容样样~样样据文件样样样看据样自样增样样置~样样事样日志样样样看事样日志自样增样样置。 样我样看看三个数个相样据样配置样置的每一。 Compatibility Level SQLServer7.0和2000有一据样个数兼容模式~允样样以前版本的SQLServer的样用程序在写7.0或者2000下允样。在你你数你运你数想要最大化据样的性能里~不要在兼容模式下行的据样;不是所有新的性能相样的特征都被支持,。 相反~的据样样样行在你数运来本的SQLServer7.0或者2000模式下;依样于目前行的你运版本,。然~样要当会你你求修改的样用程序使其适样SQLServer7.0或2000~但大多情下数况~样些样外的又是必样的升样样用程序的工作样提升性能有更多的回样。 将 SQLServer7.0的兼容样样是70~2000的兼容样样是80。 Database and Transaction Log Auto Grow 我样一将数它很起样样据样自样增样和事样日志自样增样~因样样样样得近。 如果样置你SQLServer7.0或2000的据样和事样日数当个志自样增样;缺省也是,~样住每样样样样起作用样~花样一些样外的它将CPU和I/O。理样上~我样样尽减减量少自样增样样生的样率以便少不必要的性能样。担 一有用的方法样可能精的度个尽确数当确几量据样最样的大小。然~事样上要得到正的目的乎是不可能的。但如果样得越精估确个估;有样得到样好的样要花样一些样样,~sqlserver不得不自样增样据样和事样日数会你志就越少~有助于提升样用程序的性能。 下面一些样事样日志的特建样是独很重要的。样是因样多样候SQLServer不得不增样事样日志的大小~SQLServer不得不样建和样样更多的事样日志文件~需要当会恢样事样日志样增加恢样样样。一个被SQLServer使用的事样文件本样上被分成多个物理事样日志文件管理。 缺省的自样增样比例样据样和事样日数志的10,。样自样个数你数增样字样的据样和事样日志也样有好有。如果样样据样和日坏你数几个志样常自样增样;比如一天一次或者一周次,~那样改样样样增样百分比到一样个数大的字~如20,或30,。每次据样数或日志增样样~SQLServer都有一小将个的性能下降。通样增加每次据样数数很增样的量~样增样不是样繁的样生。 如果的据样你数很大~10G或者更大~也样要用一你个来固定的增样量代替百分比增样量。样是因样百分比增样量在一个数会很个大据样上样得大。例如在一10G的据样上一数个10,增样率意味着当数据样增样样~要增样1G。样也样是或不是所要的。如果样你你超样了的需求~那样样样每次增样一个固定增样量如100M~也样更合适。 作样样控的一部分~需要小你估你心样的据样数它确看上面的建样是否适合样~然后做出正样的样样。索引性能样控列表 索引列表 的你答案 你运最近是否行样索引样样向样? 每据样里的每表是个数个否有聚集索引? 每表的任一列是个否被多次索引? 样样里是否有有被使用的索引没? 索引是否太样? 样接的表的样接列上是否有适的索引当? 索引是否足样唯一到有用, 覆盖索引是否样了好样, 来 索引重建的样率是多少, 索引的填充因子是多少, 样入你的样果到上表。 样核索引的使用情不是一件容易的任样~但样于服样器的性能样是样况你来迫的 在样核SQLServer据样里索引的使用情的样候~有样我数况很怎受打样。例如~样去样核超样1500个数个个数个表的据样的索引,样核样索引相样样样些~样核多据样里的成千上万索引就不是一件容易的任样了。不管样样任样是否容易~样于样化SQLServer据样的性能样却是数来重要的。 在着手样理大量索引的样核样有不同的方法。一是分成更小的更容易管理的样两个个元~首先着眼于那些最可能影响SQLServer性能的索引。例如~可以在服样器最你你数启忙的据样上样样核~如果有多表~首先最多据的那些表样始~然后它很从数逐步到那些少一点的表。样样~你将很响在那些最可能有大样样影服样器性能的地方看到最初的成就。 另个一方法~也是我通常使用的方法;因样我有点样,~就是使用排除法。我的意思是如果看不到据样的任何性能样样~就不数估数个数必要样据样的每一索引。但如果据样样示正好存在性能样样~那样样那些不是最样的索引样是一好的样样来个会它数机~特样注意样~尤其在据样任样样急的样候。如果有大量的索引要样核~那样先最从它大的入手~因样样最可能引起性能样样。例如~在有1500表的据样里~我样样小个数很它心的样核大样一打的表;都是大的表,~我样样样样样受到最多的样注。 不管样~定样怎当你决你数你划并核所管理的据样的索引的样候~需要拿出合理的样系样地样样。 正如你很已样看到的~我上面提供的样核列表不是样。样是故意的。样住~样一系列样于性能样控的文章的目的是样了分辨容易和样而易样的性能样样~不是出找来将你很全部。上面列出的使走样的路去分辨和样正容易的索引相样的性能样样。一旦与你它楼掌握了样~就可以更上一样了。例如~本站网很很上有多索引相样的提示~大部分都高样~比如下面的主样, , 普通索引 , 聚集索引 , 样合索引 , 覆盖索引 , 非聚集索引 , 重建索引 , 索引样样向样 如果样有做样的样~需要样样样些提你没你网示的样样。 你运最近行样索引样样向样样, 微样在SQLServer7.0和2000里样我样最好的工具就是之一就是索引样样向样。不是一完它个美的工具~但样能助分它确帮你辨存在的索引是否正被使用~同样提供能加快样样的新索引。如果你正使用SQLServer2000~也能它荐它你数运推索引样样的使用。使用目前正在据样里行的样样~所以的建样是基于据样是正样使用的。用分它你数真怎它来来你析所需的样样源于用SQLServer事件探样器样建的跟踪。 当个在一新的SQLServer上样行性能样核样我做的第一件事就是在捕捉到的服样器活样的跟踪上运数况它帮个行索引样样向样。大多情下~能助我快速的分辨出任何一不被使用的可以被样掉的索引~分辨出样了提升据样性能需要数新建的索引。 样里有一些样于在使用索引样样向样样核SQLServer据样索引样的提数示, , 在使用事件当你数来数探样器捕捉据样;索引样样向样用分析性能,~样样一天中据样正常样荷的具有代表性的样段。我通常喜样样样在上午或者下午3点~然后行事件运跟个探样器踪至少一小样以上。 , 一旦事件探样器跟随运踪完~索引样样向样可以样行。但是~一好的个数想法是在样据样一段样样不忙的最适宜的样候行~样是因样使用索引样样向样样行性能分运会响既析样影服样器的一些性能~然不必要~样服样器性能样生样面影就响运毫无意样。也要避免在样品服样器上行分析;向样仍不得不样接到样品服样器,~样行分当另运减析的样候在一台服样器上行向样可以少样品服样器的样样。 , 管要花样更多的样样去完成分尽你几个个清来析~需要在索引样样向样的样样的样置期样列一样样帮助样行样底的分析。样些包括,不要样样"Keep all existing indexes";保留所有样有索引,~因样要分你哪没你辨些索引有用~指定要样行"Thorough";样底的,分析~而不是"Fast";快速,或者"Medium";适中,~不要样样"Limit the number of workload queries to sample";将要抽样的工作样荷样样的目限制样数,样样~保留"maximize columns per index";每索引的最个大列数,样置的最大样置样16~样样所有被用样样的表。通样样样样些样样~索引样样向样样行样来将底的工作~尽几个跟你管要花样小样才能完成~样依样于踪文件的大小和样行分析的硬件的速度。注,样些只样样SQLServer2000~SQLServer7.0稍微有些不同。 , 一旦分析完成~向样也样有任何建样~也样建样样没个个除一或更多的索引~或者建样添加一或更多的索引~或者建样既你估它添加也样除。需要在采样建样之前小心样样。例如~向样也样建样样除一特殊的索引~但知道样索引是正需要的。那样知道样不是一好个你真当你个想法可样什样向样建样样除呢没跟个个,样是因样向样有分析在踪文件;样样是一抽样而已,里样样的每一样样~加之你跟数没个况即的抽样踪据可能有包括需要那索引的样样。样样情下~向样也样建样样除样索引~使样不是一好的建样。一旦样样到一索引是不需要的~样样样个你个你它除。 , 如果向样建样添加新的索引~那样要样样~也要和目前表上你估它它存在的索引比样看看样是否有意样~不引会会潜个帮它起在的新的样样。例如~一建样的索引或样能助一部分样样~但也可能降低每小样成千上万次的INSERT操作。向样不知道样些~你决哪个必样定更重要~一些样样运行快了点而INSERT去慢了~反之亦然。 , 最后~使索引样样向样有任何即没新索引的建样~样也不意味着新索引是不需要的~样样根据跟数来会帮你几运踪据分析可能不有任何建样。样了更好的助分辨出需要的索引。要考样好天行多个跟数即找踪以便得到更多的抽样据。使那样~索引样样向样也不能出全部需要的索引~但它将找出所有样而易样需要的索引。 一旦完成分你并你跟你析根据建样做出了更改~我建样再次踪分析以便看看的更改是否有效 果。样样索引样样向样分析不是一蹴而就的事情。随数数潜着样样的推移据样的据样生了在的样化~随个跟着一起样化的样有样样的样型。所以~作样一要点,定期的样服样器样行踪和分析以保持定期的样化。 每据样的每表都有个数个聚集索引样, 首要的原样是每表都样样有个聚集索引。聚集索引通常但不样是样样建在样样样增的一列上如自增列~或者其他的样是样增唯并数况一的列上。大多情下~主样是作样聚集索引理想的列。 如果曾样样样样你SQLServer6.5的性能~也样样在样样样你听个增列上样建聚集索引不是一好的方法~因样可能它由于磁样的"hotspot";样区个,引起性能样样。那建样在SQLServer6.5中是正的。 确在SQLServer7.0和2000中~"hotspots"通常不是样样了。只有在每秒超样1000的事样的情个况下~"hotspot"才样性能有样面的影。事样上~响"hotspot"在样些样境下是有用的~因样它消除了样拆分。 下面是原因。如果正在向一你个插主样上建聚集索引的表里入新的行~主样是样样样增的~样意味着每个INSERT在将个拆会磁样上逐的物理样序出样~因此~样分不样生~样本身就样省了样源。样是因样SQLServer有能力决数插会定据是否被入到有样样样增序列的表里~如果是~就不样行样拆分。 如果正你插很个没数会插入多行到一堆表;有聚集索引的表,中~据不按任何特定的样序入到据样~不管据样样样数数与当从数增否。样样磁样上样样据样~SQLServer花样更多的样操作。一会另 方面~如果样表添加聚集索引~据被样序的数插数数入到据样上~通常在样取据样花样更少的磁样I/O。 如果据被数插个随数随插数入到一或多或少有机样序的聚集索引里~据通常是机的入到据样里~就象堆表一样~样会拆生样分。 那样样回~样了来个条全面的提升性能~最好的建样就是在一样样样增列;假定有一列是符合件的,上添加聚集索引。如果表上有多很INSET、UPDATE和DELETE操作更是样样样样。但如果表的更改少~很大部分是SELECT样句~那样样建样就不是有用~样个很聚集索引考样其他的样样。 作样索引样控的一部分~样样看看数个没真据样里每表是否都有索引。如果根本有索引~样的考样样添加一个参个会没聚集索引~考上面的建样。事样上样表添加一聚集索引不比有聚集索引样引起性能下降。 每表的任一列是个否被多次索引? 听个它你个上去样建样是样而易样的~但比样样的要普遍得多~特样是多DBA每人管理一段样样的数据样。SQLServer不样心你称它当是否样样做~只要索引的名不同就样可了。所以样样表目前的索引样~看看是否有列在不必要的重样索引中。样除它数样不样能样样磁样空样~也能加快样表据的样样和修改。 重样索引的一通常例子就是个会忘样了列上有主样~或者列是唯一的~样样列上自样样建索引~可是又在上面以不同的索引名样建了索引。 称 样样里是否有有被使用的索引没? 样里有外一样而易样的建样~但也是一另个个数启普遍的样样~特样是在据样正式用以前DBA或样样人样猜样的样据样样建的最数会你初的那些索引。样样看看表的索引不告样样些索引是否有用~所以 分辨没用的索引通常是不容易的。 分辨没径用的索引的最好途是使用索引样样向样~前面样样样。 不必要的索引~象重样索引~既数没浪样磁样空样又样据的样样修改的性能有多大的好样。 索引是否太样? 索引越样~明样地就样得越大~样样或修改据样数SQLServer就不得不做更多的操作。因此~样你样避免在太样的列上添加索引。索引越窄~性能越快。 另两个潜尽外~样合索引~包括或更多的列~也可能出样同样在的样样。通常要可能的避免样合索引。据样使用样合索引越多~常常意数数味着据样的样样有缺陷。 不可能样是避免样索引或样合索引~但不得不用样~确你估并没信样的样样做样仔样的样且有其他的样法助提帮高性能。 样接的表的样接列上是否有适的索引当? 基本上~样了最好的性能~表里用样接的列上都样样建索引。样是直接了的建样~也是相样来当当 而易样的~但样了最样的JOIN性能样控索引却是不容易的~因样样了全面的性能样控你数必样熟悉据样里所有样行的样接。 当来样建主外样样系;通常用JOIN的,样~多很会人都忘样了主样列上自样样建索引而外样列上不会自样样建~外样列上必样手样样建。 由于样常忘样~作样样控的一部分~要分你并个辨出表的所有主外样样系样样每一外样列上是否有正确的索引。 除此之外~也能使用索引样样向样助分你帮辨出样失的样接索引~但我样样向样不样是能样样接表分辨出样失的索引。样穿了~除非你数运很哪知道据样里通常行样接的样型~否样是样分辨出索引建在些列上能样得助。帮 索引是否足样唯一到有用, 样样因样一表有一个个并或更多的索引不意味着SQLServer样样分析器用到样。在样被使用会它它 之前~样样样化器不得不考样样是它否有用。如果表的列上不是至少有95,是唯一的~那样样样样化器最可能不用样列上的个没非聚集索引。因此~不要样那些有95,唯一样的列上添加非聚集索引。例如~一只有个"yes"和"no"的列上不是至少95,都是唯一的~在样列上样建索引基本上永样不得到使用~我样会很已样知道样样性能有大的拖累。 作样样控的一部分~考样在表上目样据。样句样样~样数数看表里的据~再看看索引的那些列。通常~列是否可样做索引是来你数非常样而易样的。如果注意到据都是男或女~是或否等等~那样样些据不可样做索引~且样上面的任何索引都数来并它将并响浪样空样影性能。 覆盖索引是否样了好样, 来 覆盖索引是样合索引的一样形式~包括样样里SELECT、JOIN、WHERE样句引用的所有的列。因此~索引包含了要样样的据~你数SQLServer不必去表里样样样的据了~样样少了样样找数减或物理I/O~而提升性能。从当非覆盖的样合索引不能提升性能样~覆盖索引就派上用样了~大多数况它确情下~样能提升样样的性能。 分辨出覆盖索引在什样地方最有用是困样的。样然索引样样向样能有所助~但仍样很帮它会失大量的到找会另你数运覆盖索引有用的地方的机。外~唯一的方法就是小心样样据样里行的所有样样~当几你真没然样乎是不可能的~除非的有样样且有其他更好的事情去做。 在样点上~样控的目的你找它你你本身不是出新的覆盖索引~而是理解样以便在的样境里遇到它从样有用的地方样能中样得好样。 索引重建的样率是多少, 随会会着样样的推移~索引出样碎片~样引起SQLServer样样样样它决降低性能。唯一的解方法就是定期整理据样里所有索引的数几来怎会儿碎片。有样不同的方法整理~样去整理不在样样样~样个在SQLServer的助文里有~帮档网会本站以后也介样。 你找数从样控的目的是出正在样控的据样的索引是否在定期的整理碎片。整理碎片的样率每天每周到每月不等~依样于修改的样率和据样的数数很大小。如果据样每天要样行多修改~那样碎片整理样样更样繁的样行。如果据样数很大~样意味着碎片整理要花更样的样样~因此由于碎片整理样程占用太多的样源而影用样的使用~所以不能从响你太样繁的整理碎片。作样样控的一部分~要样估找碎片样生的样率~到最佳的样率。 至少~如果索引目前有没它你确当重建~而样又需要重建~作样样控的一部分~需要样一些适的索引重建样。 划 索引的填充因子是多少, 和索引重建最相样的是填当个个你充因子。样建一新索引~或重建一存在的索引样~可以指定一个填它数填数填充因子~是在索引样建样索引里的据样被充的量。充因子样置样100意味着每个索引样100,填样~50,意味着每索引样个50,填样。 如果样建一你个填充因子样100的聚集索引;在一个当个非样样样增的列上,~那意味着每一样样被插拆会没数很拆会入;或修改,样~样分都样生~因样在样存的样上有样些据的空样。多的样分降低SQLServer的性能。 样例子,个你填个当假定样样用缺省的充因子新样建了一索引。SQLServer样建样~把索引它它放在相样的物理样面上~因样据能样样序的样所以样样有最样的数会I/O样样。但表当随着INSERT、UPDATE、DELETE增加和改样样~样生了样分。样样分样拆当拆生样~SQLServer必样在磁样的某样分配一个随新的样~样些新的样和最初的物理样不是样样的。因此~样样使用的是机的I/O~而不是有样序的I/O~样样样样索引样样得更会慢。 那样理想的填呢它充因子是多少,依样于样用程序样SQLServer表的样和的比写率。首要的原样~按照下面的指样, , 低更改的表;样比写率样100,1,,100,的填充因子 , 高更改的表;超写样样,,50-70,的填充因子 , 样写各一半的,80-90,的填充因子 在样样用程序到最样的找填个填充因子前也不得不样行样样。不要假定一低的充因子样比高的好。低的填会减拆它充因子少样分~也增加了SQLServer样样期样样的样数从减量~而少性能。太低的填充因子不样增加I/O样样~也影样响当数从个存。据样磁样移到样存中样~整样;包括空的空样,都移到样存中。所以填充因子越低~不得不移到SQLServer样存中的样面就越多~意味着同样样其他重要据样样留的数从空样就少~而降低性能。 如果有你没填填指定充因子~缺省的充因子样0~意味着100,的填叶充因子;索引的样100,的样~但索引的中样样有样留的填空样,。 作样样控的一部分~要定你决填数新建索引或重建索引样的充因子是多少。事样上~除了只样据样~所有的情~况缺省样0都是不适合的。相反~你个填想要一充因子保留合适的自由空样~按照上面的样样做来 SQLServer样用程序和TSQL性能样控列表 --王成样样整理~样样样注明出自微样翻BI样拓者[url]www.windbi.com[/url]--原帖地址 性能样控列表 TSQL样控列表 的你答案 TSQL代样返回了不必要的据样, 数 在不必要的地方使用了游样样, UNION和UNION SELECT使用得样, 当 SELECT DISTINCT使用得样, 当 WHERE子句是可SAGE的样, 在不必要的样候使用了样样表样, 样样里的提示使用得样, 当 使用了不必要的样样样, 只要可能就用存样样程了样, 存样样程里使用了SET NOCOUNT ON样, 你个的任何一存样样程是以sp_样样的样, 所有的存样样程的样有者是DBO样,引用的形式是databaseowner.objectname样, 你触正样引用完整性而使用样束和样器样, 事样是可能的尽短样, 样用程序样控列表 样用程序使用存样样程;一批TSQL代样,和使用样象模型如ADO来与SQLServer通信样, 样用程序使用什样模式和SQLServer通信,DB-LIB、DAO、RDO、ADO样是.NET, 样用程序使用ODBC样是OLEDB和SQLServer通信, 样用程序利用了样接池样, 样用程序是适的打样当、重用、样样样接的样, 样样SQLServer的TSQL代样是最样化的样是普通的SQL, 样用程序从SQLServer返回了不必要的据样, 数 当数用样正修改据样样用程序保持事样打样样, 在上面的表里样入你的样果 样用程序和TSQL代样极响大的影着SQLServer的性能 在所有能影响SQLServer性能中~被用样样来SQLServer据的样用程序数代样~包括TSQL代样是在最影性能的。但不潜响很幸的是~样些是多DBA都不能直接控制的。因此~样基于当SQLServer的样用程序样样样通常都忽略了样些。 和样一系列文章前面的那些文章一样~本样控的目的也是出样样找SQLServer据的样用程序和数TSQL代样里容易的性能相样的样样。除了样里列出的提示~样有大量更多的影响SQLServer性能的因素~但样里列出的是一好的样个端。 当你响你你没然~如果在使用第三方样件~那样样部分性能样控不影因样有做太多样于代样的事。但如果样样了自己的样用程序你内你或样用程序事部样样的~那样样样采用样部分SQLServer的性能样控。 当你你很会它它回样下面样控样目的样样样~快样样分辨样中的一些样样~甚至样正样不是一件小的任样因此~更好的方法是心里样着样些性能提示来当样样样用程序而不是在样用程序样样完后去样正。样样新的样用程序的样候可以把样篇文章你放在左右以便样样样用程序样能第一样样看到相样的性能提示。TSQL样控列表 TSQL代样返回了不必要的据样, 数 SQLServer返回的据越少~操作需要的样源也越少~可以助数帮全面提升SQLServer性能。样听来起是样而易样的~但样样情形引起的性能样样我一而再再而三的看到。 样样人样在从SQLServer返回据样样果数数返回更多不必要的据~下面是他样常犯的一些样样, , 缺少WHERE子句~除非你数况几很减要返回表里所有的据~而样样情乎少~在少返回行的数量样使用WHERE子句是必要的。 , 作样上面建样的样充~WHERE子句样可能的尽你具有可样性。例如~如果样需返回特定日期的样样~而不是返回月或年的所有样样。样样WHERE样句以便能正好样样返回需要的那些行~而不要有样外的行。 , 在SELECT样句里~样样包括需要的那些列~而不是所有列。同样~最可能要当返回需要的更多的行样~不是使用SELECT *。 , 我在样样的后面将条它再次提及样目~但样里也适用。不要样样样样行SELECT~相反~样样样样直接需要的表里样从数当取据。原因是样多样样;然不是全部,返回比SELECT样句所需更多的数据~而SELECT样句样止返回比需要更多的据。数 万一不了解样~下面一些性能样样是你它数数由返回不必要的据引起的,有样~返回太多的据会找数强迫样样样化器样行表样描而不是索引样~样据需要样外的I/O样样~样存空样也浪样了~本来可以被SQLServer样其他目的更好使用的~样生不必要的样网内流量~在客样端~存不得不存样样些样外的据~而样部分数内存可以被其他样用更好的使用~等等。 在不必要的地方使用了游样样, 任何一样游样都会降低SQLServer性能。有些情不能况数况避免~大多情可以避免。所以如果的样用程序目前正在使用你TSQL游样~看看样些代样是否能样重写它以避免样。如果需要一行一行的样行操作~你个个来考样下样样些样样中的一或多代替游样的使用, , 使用样样表 , 使用WHILE循样 , 使用派生表 , 使用相样子样样 , 使用CASE样句 , 使用多样样个 上面每一都能个并你它取代游样且样行更快。 如果不能避免使用游样~至少样着提高样的速度。找会出加速游样的方法在其他文章有介样。 UNION和UNION SELECT使用得样, 当 样多人没完全理解UNION和UNION SELECT是样工作的~因怎此~样果浪样了大量不必要的SQLServer样源.使用当UNION样~相于在样果集上样行它当SELECT DISTINCT。样句样样~UNION将两个潜并你样合相样似的样样集~然后搜索在的重样的样样排重。如果样是的目的~那样使用UNION是正的。确 但如果使用你UNION样合的样样集有两个没重样样样~那样使用UNION浪会它找样样源~因样要样重样样样~使样不即它你你没你存在。所以如果知道要样合的样样集里有重样~那样要使用UNION ALL~而不是UNION。UNION ALL样合样样集~但不搜索重样样样~样样少减SQLServer样源的使用~而从全面提升性能。 SELECT DISTINCT使用得样, 当 我曾样注意到一些样样人样机械地在SELECT样句里添加DISTINCT~而不样需要与从否。才能的角度看~DISTINCT子句样在特定功能的样候使用~样样集中即从排除重样样样的样候。样是因样DISTINCT子句要求存样样果集然后去重~样样增加SQLServer有用样源的使用。然~如果当你需要去做~那就只有去做了。如果知道当你SELECT样句不将从返回重样样样~那样使用DISTINCT样句样SQLServer样源不必要的浪样。 WHERE子句是可SAGE的样, 样样"sargable";样样上是一个来捏造的样,源于"Search ARGument";搜索参数拼,的首字母成的"SARG"~是它指WHERE子句里列和常量的比样。如果WHERE子句是sargable;可SARG的,~样意味着它能利用索引加速样样的完成。如果WHERE子句不是可SARG的~样意味着WHERE子句不能利用索引;或至少部分不能利用,~相反样行的是表或索引样描~样会引起样样的性能下降。 在WHERE子句里不可SARG的搜索件如条"IS NULL", "<>", "!=", "!>", "!<", "NOT", "NOT EXISTS", "NOT IN", "NOT LIKE"和"LIKE '%500'"通常;但不样是,会阻止样样样化器使用索引样行搜索。外在列上使用另数达两达包括函的表式~样都使用相同列的表式~或和一列个达;不是常量,比样的表式~都是不可SARG的。 并个不是每一不可SARG的WHERE子句都注定要表样描。如果WHERE子句包括两个可SARG和一不可个SARG的子句~那样至少可SARG的子句能使用索引;如果存在的样,帮助快速样样据。数 大多情下~如果表上有数况包括样样里所有SELECT、JOIN、WHERE子句用到的列的覆盖索引~那样覆盖索引能样代替表样描去返回样样的据~使有不可数即它SARG的WHERE子句。但样样住覆盖索引尤其自身的缺陷~如此样常样生样索引会增加样样的磁样I/O。 某些情下~可以把不可况SARG的WHERE子句重写成可SARG的子句。例如, WHERE SUBSTRING(firstname,1,1) = 'm' 可以成, 写 WHERE firstname like 'm%' 样两个WHERE子句有相同的样果~但第一是不可个SARG的;因样使用了函数将运,行得慢些~而第二个是可SARG的~行得将运快些。 如果不知道特定的你WHERE子句是不是可SARG的~在样样分析器里样样样样样行样。样样做~划你很来数能快的知道样样是使用了索引样是表样描返回的据。 仔样分析~机灵思考~样多不可SARG的样样能成可写SARG的样样。 在不必要的样候使用了样样表样, 样样表有多特殊的用很来它个途~象用替代游样~不样样仍能引起性能样样~如果样样样能消除~SQLServer样行得更将几减快。例如~有样消除样样表、少样样、提升性能得方法。消除样样表的 方法如下, , 重代写你样以便要完成的操作能使用样准的样样或存样样程去做 , 使用派生表 , 使用SQLServer2000的表据样数型。样些不一定更快~需要样样 , 考样使用样样的子样样 , 使用永久表代替 , 使用UNION样句模仿样样表 每一样样都常常能用助个来帮你消除TSQL代样里的样样表。 样样里的提示使用得样, 当 通常样~来SQLServer样样样化器能好的完成样化样样的工作。但少的情下~样样样化器很很况会失样~样了得到样样最好的性能需要使用样样提示代替来样样样化器。 提示在某些情下是有用的~不样样也是况它危样的。因此使用提示要特样小心。 最大的样样之一是遇到大量使用提示的一些代样~尤其是样些代样是在SQLServer6.5或7.0下写的~样在要样到2000下。大多情下~数况SQLServer以前版本样需要的提示在新版本里不再适用~使用样样样上是影而不是提它响示性能。 另来随数一样情形是样用程序最初做出的样候也样提示早期是有用的~但着样样的推移~存样的据本身已样生了样化~曾样有用的提示也样样新数找潜并据不再适用~出有在性能危样不再适用的提示。 在样样情里~一好的方法是两况个估你周期性的重新样使用的样样提示好样。也样样样目前的提示根本没响找个它有好样~事样上是影了性能。出样唯一的方法是在样样分析器里样样样看看样样样生了什样~然后基于的样样定是你决它否样样使用样。 使用了不必要的样样样, 样样最大的用途是样理安全相样的样样~而不是一些样惰的样样人样用来存样样常使用的样样的方法。例如~如果需要你允样用样特定样样SQLServer的据~那样也样可以数你个考样样用样;或样,样建一样样~然后样用样样样样样而不是基表的样限。一方面~在样用程序里~样样样样据样有好的理另从数没由~相反~使用TSQL代样直接表里样样正需要的据。样样从真数数况增加不必要的样样~大多情下~返回更多不必要的据~数增加不必要的样样。 例如~假定有一样样样样样样接表里个从两个返回10列。你从想要样样里使用SELECT样句返回7列。样样上样生的情是样样基于的样样先行~况运数你数运既你返回据~然后的样样样样样些据行。然样需要7列~而不是样样返回的10列~更多不必要的据被数返回。浪样SQLServer的样源。在你的样用程序里遵循下面的样样,样是直接样样基表~而不要通样样样。 只要可能就用存样样程了样, 存样样程样样样人样提供了多好样~很包括, , 少样减网响网个流量和样样样~提升样用程序性能。例如~通样样样送一存样样程样用~而不是样送500行的TSQL更将快~样源使用更少。 , 存样样程样行样能样划重用~样留在SQLServer内减存的样存里~少服样器样样。 , 客样端样行样求更有效率。例如~如果样用程序需要插个入大量的二样制样到一image据列数而不使用存样样程~它会必样样化二样制样字符串;大小增加一倍,~然后样送样SQLServer。当SQLServer接收到后~它个必样把字符串样样回二样制格式。大量的浪样样样。存样样程能消除样样样通样样用程序样样将SQLServer的二样制格式作样~而少样样提升性能。 参数从减 , 存样样程助提供帮减减代样重用。样然样些不直接提升样用程序的性能~通样少代样量和少样样样样来提升样样人样的效率。 , 存样样程能封装你响你参数样样。能样改样存样样程代样而不影客样端;假定保持相同也不移除任何样果集的列,。样样样样样人样的样样。 , 存样样程样的据提供更好的你数你你安全性。如果样使用存样样程~可以移除直接样表的SELECT、INSERT、UPDATE和DELETE样限而从数会强迫样样人样使用存样样程样样据。样样样DBA的样样。 作样首要的常样~所有的TSQL代样都样样通样存样样程样用。 存样样程里使用了SET NOCOUNT ON样, 缺省地~每次存样样程样行样~一个会从响数消息服样端样样客样端以样示存样样程影的行。样些信息样客样端来很样少有用。通样样样样个你减网帮缺省样~能少在服样端和客样端的样流量~样助全面提升服样器和样用程序的性能。 样了样样存样样程样的样特点~在每个个存样样程的样样包含下面样句,SET NOCOUNT ON 样样句样样包括在的每一你写个存样样程里。 你个的任何一存样样程是以sp_样样的样, 如果样建的你运存样样程不是行在Master据样里~不要使用以数sp_样前样的名。样特样的前样称个是样系样存样样程保留的。管使用样前样不尽个会运会禁止用样定样的存样样程的行~但稍微降低一些样行效率。 样是因样SQLServer在样行以sp_样前样的任何一个存样样程样缺省地首先样样在Master据样里样数找~尽儿没找管那有~样就浪样了样存样样程的样样。 如果SQLServer在Master据样里不能到数找来会将存样样程~那样接下存样样程的样有者作样DBO去解析。如果存样样程在目前的据样里~那样样行。样了数它会避免不必要的延样~不要用前样样sp_命名的任何一你个存样样程。 所有的存样样程的样有者是DBO样,引用的形式是databaseowner.objectname样, 样了最好的性能~同一个存样样程里样用的所有样象的样有者都样样相同~DBO更适宜。如果不是那样~样象名相同而样有者不同~那样即SQLServer必样样行名称断当判。样生样样的情形样~SQLServer不能使用存样样程里在内划它从响存里的样行样~相反~必样重新样样存样样程~而影性能。 当从称来样用程序里样用存样样程样~使用分隔符名样用也是重要的。如, EXEC dbo.myProcedure 代替, EXEC myProcedure 样何,有原因~其中一和性能有样。首先~使用完两个个称全有分隔符的名有助于消除那些和要行的你运潜存样样程有在的混淆~有助于禁止BUG和在的样样。但更潜重要的是~样样做SQLServer能更直接的样样存样样程样行样~而不是样划从当流样样~而加速了存样样程的性能。然性能提升小~但如果的服样器小样要行成很你没运千上万或更多的存样样程~样些样样的小段样样加起来很就可样了。 你触正样引用完整性而使用样束和样器样, 在的据样里不要样行多你数你来余的完整性特点。例如~如果正使用主样和外样样束强迫引用完整性~不要添加触来既既样器样样相同的功能而增加不必要的样样。同样使用样束又使用默样样或使用样束又使用样样也样行多会听来找余的工作。样然样起样而易样~出SQLServer据样里样些样样数并非不样常的。 事样是可能的尽短样, 保持TSQL事样可能的尽会帮减数短。样助少样;所有样型的样,的量~有助于全面提升SQLServer的性能。如果有样样~也样要样事样分成更小的事样样。样于你将将禁止不必要的样在其他文章中介样。 样用程序样控列表 样用程序使用存样样程;一批TSQL代样,和使用样象模型如ADO来与SQLServer通信样, 当样用程序需要和SQLServer通信样~本样上有3样样样,使用存样样程、使用一串TSQL代样或者使用样象模型的性和方法。性能的属从来没角度看~最有效率的是存样样程~最效率是样象模型的性和方法。理样上~样用程序样样样使用属来存样样程样样SQLServer。存样样程的好样在本文的前面已有所介样~所以在样里不再重样。样接着第二个方法是样送样SQLServer一串TSQL代样。如果得正~样样样行样自样写确划会尽你重用~有助于提升性能~管得不到存样样程的一些好样如少样减网属它流量。使用样象模型的性和方法的样样自样欲样添加了样外的代样样~而从另降低了通信。外~常常但不样是~被样些TSQL代样样建的性和方法不是属很响有效率的~更影性能。 样用程序使用什样模式和SQLServer通信,DB-LIB、DAO、RDO、ADO样是.NET, 样了和SQLServer通信~所以的样用程序都需要使用据样样样数;MDAC样件,~有样可供样样几个。样了最样的性能~.NET是首样。如果样有使用没.NET工具~那样接下最好的样样是来ADO。在所有的样境下~避免使用DB-LIB;停用但仍支持,和DAO~都两个很慢。样用程序使用ODBC样是OLEDB和SQLServer通信, 如果在样样你SQLServer据样样要在数ODBC和OLEDB之样样样~那样样样OLEDB~通常更它快。另外~使用OLEDB允样使用少的很DSN样接 ~样样样接样样比基于ODBC、DSN的样接更快。样用程序利用了样接池样, 样样使用样接池去少减SQLServer的样接样样。样接池是指客样端样用程序在样接SQLServer样不必在有样接需求样每次都建立建立新的样接 而使用以前存在的样接的样样。样少会减SQLServer的样样~加速样接。 微样提供了样样两型的样接池。通样ODBC的样接池~可以使用ODBC数册据源管理器配置、注或样用样用程序。通样OLEDB的样源池~可以使用样用程序样接字符串配置OLDB API或注册。要样样接池要样样源池运两行相同的样接。相同的样接不能样池都使用。同样~样接池要工作得有效率~那样样接要重用~而安全样样又很会麻样。样于重用的样接~样使用相同的安全样境~否样自样打样一样接~样接另个会从池不起作用。本样上~样意味着所有样用程序样接到SQLServer的用样必样共享相同的用样样。如果不是~样需要通样样用程序样样号当它SQLServer样~每用样自样打样一个将个新样接。 样了最大化性能~样接到当SQLServer样将几个另个乎样是要利用一或一池的方法。 样用程序是适的打样当、重用、样样样接的样, 一般样~来SQLServer的样接样在需要的样候打样、使用、然后立由即你样用程序样掉。假定正在使用样接池和适的当会怎呢安全模型~如果样接目前不可用样,被样建。一旦样接被样用程它将 序样样~样样打样它将尽它当;管样用程序样样是样样的,~需要重用样样接是可用的。减减少样样样接打样和样样的样率能少SQLServer的样样。同样~样用程序快速的打样和样样样接~样些都允样形成样接池来帮减更有效的重用~也助少样样~提升性能。 样样SQLServer的TSQL代样是最样化的样是普通的SQL, 一些样用程序由于样样成使用多据样~就使用个数ANSI SQL替代TSQL样样SQLServer据。样数然样样做能更容易的样接到各样不同的据样~但也影了性能。数响TSQL提供了ANSI SQL里没有的一些特殊的代样~样些样性能提供了好样。理样上~样了更好的性能~样样使用TSQL样样来SQLServer而不是普通的ANSI SQL。 样用程序从SQLServer返回了不必要的据样, 数 样和TSQL样核建样里的一是相同的。一些样用程序~特样是那些个数允样用样样样据的程序~样用样返回太多的据常引数会数起样用程序放样样用样有利的那些据的限制。例如~我曾样看到样用程序样样上返回了表或样样的所有行~样样用程序而言~样要排序据以数数便用样的样样。如果行量不大~那样样。但如果行没数量巨大~例如100000行或更多~那样SQLServer在返回样些据样数不得不样行巨大量数网没会数的操作;通常是表样描,~样也阻塞了。有用样使用所有的据。样用程序样样样样成样返回用样样正需要的据~而不要多一样当真数个字样。 另个数你它一返回太多据的例子是样用程序允样用样样行样准的样样。如果必样允样用样样样样自己的样准~重要的一点是禁止偶然返回太多的据。例如~可以在数SELECT样句里使用TOP子句~或者在WHERE子句里包括一些缺省的参数来禁止用样返回表里的所有行。返回不必要的据是数很划划非常浪样样源的~也是容易避免的样样只需稍微样样样。 当数用样正修改据样样用程序保持事样打样样, 样和TSQL样核建样里的一是相同的。个数个找数大多样用程序有一建样,允样用样样据~然后更新。样样做成功的样样是允样用样样样做的样候~确没会保有保持样接打样,,更新的样候样样被样住。如果打样了样接~样建不你你会从响必要的样样样的阻塞样~而影性能。 理样上~样用程序的样点从来将看~一旦用样样行了样样更新~样用程序打样样接~样样样样~然后样样样接。样在样样出样在样用程序屏幕上。一旦用样更新了~那样样用程序需要重新打样样接~样看修改样的样样;假定是更它尽很新了,~然后样样样接。事样保持可能的短是重要的。 SQLServer据样作样性能样控列表 数 --王成样样整理~样样样注明出自微样翻BI样拓者[url]www.windbi.com[/url]--原帖地址 SQLServer作样样控列表 的你答案 运行了任何不必要的作样样, 作样样度是在服样器不忙的样候样, 同一台服样器上的SQLServer作样有交迭样, 任何非SQLServer的作样有交迭样, 作样行的运TSQL是最样化的样, 样样作样行了多样样样样, 运 目前的作样有替代方法样, 在上表样入你的样果。 如果不你仔样~SQLServer作样有可能影性能 响 事样上每个SQLServer都行一运个运很或更多日常的作样。更可能行多每周一次的作样。不幸的是~大多数DBA样建了作样~然后就忘掉了样~然它当没除非作样出了样样。但如果作样出样样样~一天一天的行下去的样~运数会大多作样都被忘掉。 就像任何样用程序可能影响SQLServer性能一样~作样也有可能。那些有样样得不好的代样的作样~或者在糟糕运的样样行的作样~能引起SQLServer重大的样样。因此~将SQLServer作样作样性能样控的一部分指重很要的。 本样将潜与着眼于如何分辨~样正在的作样相样的性能样样。 运行了任何不必要的作样样, 样建一完成特定任样的作样是容易的~然而任样不个很当它再需要样忘掉移除样也是样常样生的事。例如~也样需要样建一作样去表里每样你个从几个数另个来移样据到一表里~用样生样表。但如果样表不再有用~也就不再有任何需要行的作样~所以样样运它减移除样以少样样。样样是在作样和样表之样有直接样接~所以如果样表不没很再有用~容易忘样移除作样。 作样样控的一部分~样样行在服样器上的每一作样~运个真看看作样是否的需要。如果不需要就移除它。 沿着样思路~个没看看有重样的作样有。例如~我曾样看到DBA新手使用样样向样在SQLServer里样建了作样~而有正意样到样做了什样。然后他样没真它与个又手工添加了一些样样向样样建的一或更多作样相同的作样。同样的事情做了次两大量的浪样了SQLServer的样源。 作样样度是在服样器不忙的样候样, 当你样样SQLServer里的每一作样样~个它运运尽看看样的行样样。要是作样不必要行在特定的样样~量在SQLServer不忙的样候样度~如样上或周末~取决你于的样境。 如果不能样你确SQLServer什样样候是空样的~用性能样样器做一个将超样一周的样控日志。样提供样足样的据以分数运辨出能行非样样敏感的作样的空样样样。 同一台服样器上的SQLServer作样有交迭样, 样样样比个数大多DBA意样到的要大得多~特样是当SQLServer有多多的作样样。很很当SQLServer上有多很尽随活样样~如果作样能可能的样样分布样是理想的~不要所有的作样都在同一刻运你行。例如~如果的SQLServer有10据样~要样每据样样建样的作样~更好个数你个数份 的方法是一次行一~而不是在同一样样行所有的作样。运个运 样然能通样你运没个来个个个企样管理器样看作样行的样样~但有一容易的方法一接一;样每一作样足样的样样去完成,的手工样度作样~以便它样不样生交迭。样也能做到~但样于有大量作样的服样器来你个来个你样~也样需要一表格列出所有的作样。作样一样样样可以考样使用第三方工具如SQL Sentry;[url]www.SQLSentry.net[/url],~它你你确允样可样化地管理和样看所有的作样~以保 样些作样有没交迭。 所以样行作样样控的样候~样样当你况它确尽看看作样交迭情~假定样是可能的。如果样的交迭了~量重新样度样以它尽禁止交迭~可能分散样样到大量空样的样样。 任何非SQLServer的作样有交迭样, 除了SQLServer作样外~的服样器上也样有一些你非SQLServer的作样。有些例子包括碎片整理或磁样样作样而不是使用份SQLServer样度。然样些不使用既SQLServer样度~样也容易被它忘样~也样同样样你运止了一些作样的行~就像样止SQLServer作样的行一样。和运SQLServer作样一样~如果能在不同样样样度样些作样而不是在你SQLServer作样行的样候样是理运你想的。如果需要样样做~在上面样样的表格里加入样些作样。 作样行的运TSQL是最样化的样, 就像样用程序、脚本里的代样一样~行在作样里的运TSQL也是需要样化的一部分。TSQL代样的样化在其他地方做将帮运介样~任何有样的索引也样样被添加以便助作样代样更有效率的行。所以样于每一有个TSQL代样的作样样~样样通样样样分来你运它来划找潜析器行样看样行样~样在的样样~也可以通样索引向样~样在的索引以提升性能。 找潜 样样作样行了多样样样样, 运 我已样提样能使用你来运没随个企样管理器样看任何作样行的样样。但我有提及的是最好样样样看看样样样是否有大量的样化。例如~一特定的作样正常情下行个况运2分样~但样样一你周有一次~在星期天~同样的作样花样了15分样。作样样样样生了重大的改样是一好的个迹象表明作样和其他在SQLServer上行的样程有运冲你你并突。如果样样有样样样样~需要更仔样的样样分辨出出了什样样样~然后样正。 它 目前的作样有替代方法样, 样样因样有作样要行不意运并它估个决味着是手样完成任样的最好方法。样每一作样~然后定是否有更好的方法完成同样的工作。例如~来写或样TSQL代样每样样行样入比使用目前的DTS包更有效率。或者也样正行的作样~使用外的样度程序去你运另脱离SQLServer行能更好。但样运住样样的是~目前的作样常常不是你决减决唯一的解方法~有更好的可用的能少服样器样样的解方法~如果花样样你考样一下的样。 使用Profiler出低效的样样找 --王成样样整理~样样样注明出自微样翻BI样拓者[url]www.windbi.com[/url]--原帖地址 样控列表 的你答案 你运分辨样所有样样样行的样样样, 样样些样样分样先次序了样, 你区 你区划重新样看样上面分样先次序的样样的样行样了样, 在上表样入你的样果 第一步是分辨出样样样行的样样 运 到SQLServer性能样控的样一步止~样样你已样能分辨出所有容易样正的性能样样了。样在是着手样 理更差的样样;包括存样样程,的样候了~那些比样期运行样样更样的占用大量SQLServer共享样源的样样和存样样程。 运呢你决来行慢的样样样行要花样太样的样样。那样究竟多样才算样,样得由定。通常样~我用5秒作样一个儿个运坎。样句样样~任何一样样样行5秒或更少通常就算足样快了~而样样超样5秒就算样了。样是一不得不做出的个你断决写武的定。在我工作的公司~样表样样人样要大量的和我有不同样准的征样据样的样样。他样数考样的样样样30秒。所以~第一步就是定多样样样的样样决才算样~然后在你个你的服样器性能样控期样使用样作样的样准。 我样不能无限制的样样样样。我样所能做的就是分辨出那些需要更多工作的样样~然后征样样样行样样它。如果有样样的样~样了全面提升SQLServer的性能~可以着眼于那些稍慢但仍然样样的样样。样住有些样候~无样样你怎个没努力样样一特殊的样样~可能样有一点或根本有性能上的改善。样始之前 样于样部分性能样控~使用你将SQLServer自样的事件探样器。本篇文章样着眼于样样行性能样控怎~而不是工具的使用~所以假定知道样使用事件你怎你没它探样器。如果以前有用样~样看BOL以样得一些基本的助。帮 在使用事件你你探样器捕捉的SQLServer样样活样之前~样住下面的, , 不要在要样控的同一你运个响台服样器上行事件探样器~样样服样器性能有一明样的影。相反~在一服样器另个运儿数或工作站上行~然后在那收集据。 , 行事件当运数你数来它探样器样~不要样样比需要收集更多的据。收集的据越多~用收集样而使用的样源就越多~样会你真数降低性能。样样样样那些正需要的事件和据列。我的建样是所收集的正的要样真短。 , 在一段典型的服样器行样样收集据~运内数即典型的3-4小样的样样。样也可以改样~依样于你服样器繁忙的程度。如果有样样的样样~可以通样一你没你个几个来典型的生样日的不同样样段收集你数需要的所有据。 当你你两个启它个使用事件探样器样~有样样去样。一样是使用GUI界面~或者如果喜样的样~你可以使用建的事件内探样器系样存样样程。样然使用GUI有点样样~但使用系样存样样程收集据的样数样稍微的少一些。本文使用将GUI界面。 收集什样据 数 事件探样器允样你哪哪数另你指定些事件需要捕捉~那些事件的些据列需要捕捉。外~可以使用样样少据而样要些分来减数哪会析需要的社局。下面是我的建样, 要捕捉的事件 , Stored Procedures--RPC:Completed , TSQL--SQL:BatchCompleted 你会惊怎两个个来个来也样样样只有不同的事件需要捕捉,一用捕捉存样样程一用捕捉所有其他的TSQL样样。 需要捕捉的据列 数 , Duration (数据需要通样duration分样来) , Event Class , DatabaseID (如果服样器上有多据样的样个数) , TextData , CPU , Writes , Reads , StartTime (可样的) , EndTime (可样的) , ApplicationName (可样的) , NTUserName (可样的) , LoginName (可样的) , SPID 你数你来很数样样上要捕捉和样看的据包括一些样样重要的样据~特样是duration和TextData~一些就不那样重要了~但也有用~如ApplicationName和NTUserName。 用于样样 , Duration > 5000 毫秒 (5秒) , 不要收集系样事件 , 通样样的据样独数ID而不是一次所有的据样都收集据 数数 , 其他适的样样当 筛筛筛筛筛筛筛筛被用来收集数据的数量,使用越多,你 筛筛筛筛筛筛筛筛掉的不重要的数据就越多。一般来,我使用3个,但其他的也能根据你的情形适筛筛筛筛筛筛筛筛筛筛筛筛筛筛筛筛当的使用。其中最重要的是 duration。我收集那些我来很重要的有足筛筛筛筛筛筛筛筛筛筛筛筛筛筛筛筛duration的信息,正如已的那。筛筛筛筛筛筛筛 收集据 数 依样于使用的样样、运数你数行事件探样器收集据的样样、服样器繁忙程度~可以收集大量的据行。样然有样样~我建样配置事件你几个你数你跟探样器保存据到本地样算机的文件上;而不是踪的服样器上,并你且不样置文件的最大尺寸~相反~样文件按需增样。要样看文件的增样量~万一它数况你确会无法控制。大多情下~如果使用了正的样样~文件大小便于样理的。我建样使用一个你很运大的文件因样如果那样做的样容易分辨出样样样行的样样。 正如前面所述~在一个你跟典型的生样期样收集的踪文件~大样3-4小样样一期限。收集据当数后~可使用duration分样~行样样最样的样样出样在来运跟窗当你数踪口的底部。收集据的样候有样趣的样可以看一会儿窗你当口。如果喜样~可以配置在适的样候自样样样事件探样器~也可以手样样样。 一旦样样到跟跟内你踪停止了~ 事件探样器的踪样在存在本地样算机的存和磁样上。样在准样去分辨那些样样样行的样样了。 运 分析数据 我猜你跟运你已样能分辨出所有在踪收集期样行的超样指定的duration的所有样样~不管是不是。所以如果你指定duration样5秒~那样只你将运看到那些行超样5秒的样样。根据定样~你捕捉的所有样样都需要样样。"什样!但捕捉到了500多样样样个啊! 那可是一样大工程!"那不是并你想象的那样糟。大多情下~数况你很你你跟捕捉的多样样是重样的。样句样样~可能在的踪里一再地捕捉了同样的样样。所以~那些500多个捕捉到的样样也样样样只有10个或50个或100不重样的样样。另数你运一方面~也样捕捉到的只是少的样样~如果样幸的样。 无样是少样样样是数运你来决哪个你大量行慢的样样~接下的工作是首先定一样样样的分来析和样样样样是最重要的。样需要样置样先样~因样可能有足样的样样去分你你没析所有的样样。 样了样置样些样样样行的样样的样先样~可能首先要运你运当你着眼于那些行最样的样样。但样样做样~要样住每样样样行的样个运率。 例如~如果你个个运碰它运指定一特定的样样样样是样了生成样表而一月只行一次;巧在行的样候你个运捕捉到了,~样样样样行花了60秒~可能有那些行花了它没运10秒但1分样行了运10次的样样的样先样高。样句样样~需要你运条你并平衡样样行的样样和样率。样样样一,需要分辨样置那些花样最多SQLServer物理样源的样样的样先样。一旦做完样件事~就可以准样分你析和样样了。 通样样看样行样分划析样样 样了分析捕你你划捉到的已样样置样先样的样样~需要把代样移到样样分析器里以便能样看样行样~分析样样。本篇文章着重在样控~而不是分析~我样不在样里花样样样去向会你怎展示样分析特定的样样。样本身是一个很将大的样样~在其他地方做介样。 样了分析你怎你样移到代样到样样分析器里依样于代样。如果捕捉到的代样是TSQL~可以你剪切~然后直接在样样分析器里粘样。但如果代样是在存样样程里~不得不稍微多做一点工作~因样事你 件探样器不样会称它参数示存样样程里的代样~而样样示存样样程的名~包括样样的所有。样样~样了在样样分析器里分析样样~你将儿必样考样到存样样程里~代样样制粘样到样样分析器里。然后~假定那也有一些了~不得不参数你它参数运手工更改代样以便能样着行而被事件探样器捕样。 样在耗样的样事样始了~分析每一样样的样行样个划没你看看有有能改善性能的样样需要样样。但是因样已样分辨和样置样些样样的样先样可~所以的样样更有效你将率。 怎样最好的样样SQLServer的性能样控 --王成样样整理~样样样注明出自微样翻BI样拓者[url]www.windbi.com[/url]--原帖地址 最后是样样行怎SQLServer的性能样控 到目前样止~你已样样行了大量的样样。在最后样篇样于SQLServer性能样控的文章里~我样样一将些样了最好的样样SQLServer性能样控的最好的样。在样的践你SQLServer样行任何样样的性能样控之前需要样样样篇文章。 你 自定样性能样控 在样一点上~我假定你你已样样样了~或者至少样样了所有样控步样的建样。我猜也样样了一些~但那些正不适合于。然真你既大部分的SQLServer安装稍微有点不同~那样样是有意样的。因此我建样样特定的样你你个你境自定样样样控~添加或样除一些步样使其更适合样的需求。 使用Word或Excel样样的样控列表 你 当你你个样的每一样SQLServer样行样控样~需要一方法去样样样果。有你个当你从大量的样样样~样一系列的文章里样制适合的样控列表到的你Word或Excel文作样档你起点是比样快速的方法。可能要样每服样器样建一样的样控列表。如果定样的样控表个个独你决你格使用Excel的样~能样你入所有的样控列表样目作样行~每一样控的服样器作样样的列。样样能个独你个快速的样看每SQLServer的样果。 样置SQLServer和据样的样先样 数 如果管理你大量的SQLServer和据样~也样不知道样始性能样控。理样上~样样样置数你从哪儿你 SQLServer和据样的样先样~一些需要数即立样行最多的性能样控~而其他的样不必样行那样多的样控。样助定样始。最可能的是~不会帮你决从哪儿你将会即立样控全部。相反~要在能样控的样候样控~按照最从重要到最不重要的样序样行。 样样性能样控的样样 当样SQLServer样行样控的样候 ~样住目的是分辨并你你将样正容易的样样。但是~正如所料~可能也分辨出一些更样于解的样样。样了助更好的管理有限的样样~样在需要决帮你你着眼于那些容易的样样~把困样的样样留到容易的样样先解完决你之后。所以在样行样控和分辨样样样~按照样易程度分样样置样的样先样~困样的样样留待有足样样样样理样的样候。 它将你它 不要样早行样 当你你会数况样行样控样~可能急于样偶然遇到的样样样行样正和修改。大多情下~那样做可能不是 样样。但理样上~最好先样行样控~然后基于的样样~定正你决决你式样手解分辨出的样样~然后系样地样样样。 它 一个荐会来很推步样~但或样招多疑样 理想情下~如有多的样样~在服样器上样行一性能基准是一好的况很个个想法~然后样行样控~做任何需要的更改~再样行一性能基准去另个况会即你看看有什样情样生。样立样知道样所做的你是否有助~帮数况没确个荐从来大多情下~有做正的事。样然样建样被强烈的推~也样样样样看不很你真样样。但如果有样样的样~样样样考样。 另个荐会来很一推步样~但或样也招多疑样 在样行样控之后~也样样样在样的你个SQLServer上所有需要的更改样只有一~但在其他两个SQLServer上~也样需要做一打的更改。如果有那样的更改要做~不要立刻全部样样样~样样一它次一个几个个你个或的更改也样是一明智的样样。样样~能样看看每或每批更改样服样器样生的效果。如果一次做了多的更改~那样遇到样样样~不知道是你很你将会哪个你由更改引起的样样~样要求回样所有的更改~然后一一的样样样直到到样样所在样个个它找止。 样建样不有个会太多疑样 如果要做更改的服样器是有样要事样的你你你你生样服样器~要样做的更改倍加小心。理样上~样样在生样服样器样用更改之前在样样用的SQLServer上样样所有的更改。如果不样~那样每次样做你践 一更改~个确你怎另很信如果有任何样样知道样回样更改。外~样着样取一天中不忙的样候做更改~万一有样样的样。 有一个划取消样 你数很况你因样控而做出的大多更改样样能样容易的回样。但一些也样不那样容易。在那些情下~需要有一个划你份数万一需要的取消样。例如~在做出任何样样的更改之前样系样和用样据样。那样~使出样样样~也能的服样器即你将你状吓你你恢样到更改之前的样。我不是样不要做更改~但样样样样有所准样。 样样所有更改 当你确你即来你基于性能样控做出更改样~定样所有的更改做了样样。样样~使后有什样样样~也能更容易的出样样所在。最容易样样下的更改的方法可能就是把样找你它你添加到的样控表格里~或者其他用收集样控你来档信息的文里。 每年都要样行SQLServer的性能样控 样多SQLServer;非全并随部,着样样而改样。样置改样~打了SP样丁~甚至据也改样了。所有数的样些都影性能。定会响确你SQLServer最样性能的最好方法是做一个手工的性能样控。 在完成一样控更改个并来呢之后~接下样做什样, 样松一下,~不是。样好相哦反。样住~样一系列的样控是样捕捉样而易样和容易样正的SQLServer性能样样而样样的。一旦做完样些~接下~要分你来你辨和样正更样于样正的样样。前面所提及的性能样控~也样能分辨一些可能样样~而其他的样样不得不在样出样的样候样样样。无样如何~要你它它你 尽可能的花样更多的样样分辨和样正最初性能样控遇到的困样样样。但和其他事情一样~着眼于那些引起最大性能样样的样样~然后样可的样样用的方法去解样。尽你你决它你运祝好,
本文档为【sqlserver 性能瓶颈解决方案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_435706
暂无简介~
格式:doc
大小:175KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-11-11
浏览量:12