优化SQL Server 2000的设置
SQL Server已经为了优化自己的性能而进行了良好的配置,比今天市场其他的关系型数据库都要好得多。然而,你仍然有几项设置需要进行修改,以便你的数据库每分钟可以处理更多的事务(TPM)。本篇文章的目的就是讨论这些设置。我们忽略那些可以通过硬件配置或者表或者索引设计提高的性能,因为这些内容在本篇文章范围之外。
破碎页面检测
在我们开始讨论服务器配置开关之前,让我们快速浏览一下你的模型数据库??或者说用作构建新的数据库的基础的模板。默认情况下,你可以在数据库中创建存储过程、函数等类似的东西,随后他们将会被加入新创建的数据库中。
要优化性能,你也许想要关闭模型数据库中的破碎页面检测。当一个页面被成功写入磁盘的时候,破碎页面检测进行识别。如果激活了的话,你可以看到每个写操作对性能产生的每个细小的影响。大多数现代的磁盘阵列都有板上电池,使得阵列可以在突然断电的情况下完成所有的写操作??引起破碎页面的最频繁原因。
以下的步骤可以接受如何关闭破碎页面检测:
exec sp_dboption ’model’, ’torn page detection’, ’false’
这篇基础知识资源可以为你提供更多有关这个设置的信息。
服务器配置
大多数的配置是通过系统存储过程sp_configure完成的。要显示服务器的全部设置列表以便定制,你可以输入如下命令:
sp_configure ’show advanced options’, 1
GO
RECONFIGURE WITH OVERRIDE
你可以配置的选项的数量根据你的SQL Server的版本、服务包,以及位数版本(64位的SQL Server比32位的选项要多)而定。我将直接讨论最能影响SQL Server性能优化的选项。
Affinity mask: Affinity mask让你可以控制SQL Server使用哪个处理器。对于大多数情况,你不应该接触这个设置,让操作系统控制处理器关系。然而,你也许想要用这个选项来将某个处理器专门用于另一个进程(例如,MSSearch 或者 SQL Server磁盘 IO ,以及 SQL Server的平衡)。参考基础知识资源获取更多有关这个设置的信息。
Awe enabled: Awe的启动可以让SQL Server Enterprise版本运行在Windows 2000以及以上高级服务器上,或者Windows 2003 Enterprise以及以上的版本使用超过4GB的内存。如果你的服务器符合这些条件的话,就激活这个设置吧。
并行成本极限:当查询需要进行并行处理的时候,并行的成本极限就定下来了。默认情况是五秒钟。将这个数值改为稍低的数值,俄可以让更多个查询获得并行处理,但是这也会引起CPU瓶颈。这个设置只有在多个处理器的机器上才会起作用。
填充因子:填充因子设置了在创建聚簇索引的时候用来自动填充的因子。在频繁插入的表中,将数值从默认的Array0%设置为较低的数值,你会获得收益。
轻量级缓冲池:这个设置启动了光纤模式。使用这个选项在CPU利用率很高的8路及其以上的服务器上。这可以让光纤同时为每个线程提供服务,同时在默认情况下运行在每个处理器上。某些任务可以从这些光纤中获得优势。
并行的最大程度:当服务器可以使用并行或者不能使用并行,或者是当某个数量的处理器可以用于并行操作的时候,这个设置就确定了。并行就是多个处理器上发生多个处理。例如,查询的并行操作可以在不同的处理器上同时处理。
服务器最大内存(MB):如果你在SQL Server上运行了其他的处理,并且有足够的内存,那么你有可能想要留出512MB的内存给操作系统和这些进程。例如,你可以在MSSearch或者在本地运行大量的代理的情况下将其设置为512。
最大工作线程:最大工作线程设置与ADO.net中的连接池有些类似。通过这个设置,任何超过限制(255个用户)的用户连接都可以在线程池中等待,直到为某个连接服务的线程得到释放,就好像是ADO.net中的连接与连接池共享。如果你有很大量的连接,并且大量的内存,那么你就可以提高这个数值。
网络包尺寸(B):这个设置控制了网络中传输到你的客户端的包的尺寸。在有损耗的网络中(例如电话线),你可能想要将这个参数设置为比较低的数值,墨人数值是40Array6。在连接良好的网络中,你可以提高这个设置,特别是涉及BLOB的大型批处理操作。
优先推进:这个设置为SQL Server提供了处理器的推动。在任务管理器中,点击进程标签,定位SQL Server的位置,然后右击它。选择“设置优先级别”。注意,SQL Server应该运行在正常的优先级别上。输入如下命令:
Sp_configure ’priority boost’, 1
Reconfigure with override
然后重新启动你的SQL Server。在任务管理器中察看SQL Server现在运行在什么优先级别上。它应该是在高优先级上。SQL Server应该比其他的用户进程运行优先级别要高。在专用于SQL Server的服务器上使用这个设置。
总结