你目前正处于脱机状态,正在等待 Internet 重新连接

HOW TO:确定正确的 SQL Server 配置设置

概要
本文介绍下列配置设置以及使用时应注意的事项:
  • 相似性掩码
  • 轻量池
  • 最大异步 IO
  • 最大辅助线程数量
  • 内存
  • 优先级提升
  • 设置工作集大小
SQL Server 只需进行很少的配置调整,就能获得非常高级的性能。可以通过使用良好的应用程序和数据库设计而不是通过大量的配置调整来获得高级性能。有关如何解决 SQL Server 的各种性能问题的信息,请参阅本文的“参考”部分。

处理性能问题时,通过调整配置获得的改善程度通常不太大,除非当前没有正确配置系统。在 SQL Server 7.0 版及更高版本中,SQL Server 使用自动配置调整,并且配置设置(尤其是高级设置)极少需要更改。一般情况下,当没有难以抗拒的理由以及没有仔细进行系统化测试以验证更改配置的必要性时,请不要更改 SQL Server 配置。在更改配置前,必须建立一个基准,以便可以衡量更改后的好处。

如果 SQL Server 配置不正确,一些设置可能会降低服务器的稳定性,或者可能会致使 SQL Server 的行为不正常。对许多不同环境的多年支持经验表明,非默认配置设置的结果可能介于中性到非常消极之间。

如果确实更改了配置,必须在更改前后都执行严格的系统化性能测试以评估改善程度。

根据实际的支持方案,SQL Server 7.0 版或更高版本无需进行任何手动配置调整,就能获得极其高级的性能。

在 SQL Server 7.0 和更高版本中,默认情况下,SQL Server 会动态调整用户连接打开对象设置,所以不要对这些设置进行任何配置更改。

返回页首

相似性掩码

相似性掩码设置指将线程绑定到特定 CPU 的牢固程度。默认情况下,Microsoft Windows NT 和 Microsoft Windows 2000 使用“软”相似性,这种相似性会试图在上次执行线程的 CPU 上重新调度该线程。但是,如果此操作无法实现,线程可能会在其他 CPU 上运行。

在实际情况中,如果更改了相似性掩码设置的默认值,则很少能够改进性能,并且经常会使性能降低。

相似性掩码将 SQL Server 限制到可用 CPU 的一个子集,并且允许其他竞争性服务更好地访问 CPU。多数情况下,因为 SQL Server 以普通优先级运行,所以不必进行此操作。Windows NT 或 Windows 2000 线程计划程序动态调整所有竞争性线程的线程优先级,以确保它们在所有可用 CPU 中具有平等的机会。

除了非常特殊的情况以外,请不要调整相似性掩码。如果确实要选择调整相似性掩码,请在更改前后执行严格的系统化测试,以验证进行改进的必要性以及改进的程度。

返回页首

轻量池

默认情况下,SQL Server 对每个活动 SPID 或用户进程使用一个线程。这些线程以汇集配置方式运行,以使线程数量可以管理。高级配置选项“轻量池”(有时称为“纤程模式”)使用 Windows NT“纤程”支持,基本上通过单个线程来处理多个执行上下文。

根据实际生产经验,除极少数情况以外,不必使用纤程模式。只有在满足下列所有条件时,轻量池才可能有用。您必须通过仔细的受控测试来确定它是否实际有用。
  • 正在使用大型多处理器服务器。
  • 所有服务器都在以最大容量或接近最大容量的状态运行。
  • 发生了许多上下文切换(每秒钟 20,000 次以上)。
要查找上下文切换,请使用性能监视器,选择计数器线程,选择对象 Context switches/sec",然后选择捕获所有 SQL Server 实例。如果以纤程模式运行服务器,则 SQL Server 2000 中的 SQL Mail 不受支持。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
308604 PRB:在纤程模式下运行服务器时不支持 SQL Mail
303120 FIX:ConnectionWrite Error When You Use Lightweight Pooling Under Lightweight Pooling
返回页首

最大异步 IO

SQL Server 7.0:SQL Server 7.0 中提供了最大异步 IO 配置设置。如果您的 RAID 系统速度较快并且您有办法衡量好处,则更改此设置可能是适当的。除非您具有基准以便衡量结果,否则请不要更改此设置。请监视磁盘活动并查找所有磁盘队列问题。有关其他信息,请参阅下列 SQL Server 联机图书主题:
  • “最大异步 IO 选项”
  • “监视磁盘活动”
  • “确定瓶颈”
SQL Server 2000:在 SQL Server 2000 中,无法更改最大异步 IO 配置设置。SQL Server 2000 会自动调整此设置。

返回页首

最大辅助线程数量

默认情况下,最大辅助线程数量设置为 255,这样最多可以创建 255 个辅助线程。多数情况下,请使用默认设置 255。这并不表示您只能建立 255 个用户连接。一个系统可以具有成千上万个用户连接(按其本质多路复用到 255 个辅助线程),并且一般而言,用户通常感觉不到任何延迟。在这种情况下,只可同时运行 255 个查询,但这会多路复用到可用 CPU 的数量,因此,无论所配置的辅助线程数量为多少,都可以感觉到并发特性。

如果将辅助线程的数量配置为大于默认值,则由于调度和资源开销问题,几乎始终都会起相反的作用并且会降低性能。只有在非常特殊的情况下,并且当严格的系统化测试表明增加此设置会有所帮助时,才应该这样做。

返回页首

内存


有关如何配置内存的信息,请参阅 SQL Server 联机图书主题“使用内存配置选项优化服务器性能”。

有关如何为群集 SQL Server 配置内存的详细信息,请参阅 SQL Server 联机图书主题“创建故障转移群集”中的“使用注意事项”。

有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
274750 HOW TO:Configure Memory for More Than 2 GB in SQL Server
224818 Simple Memory Tuning Is Required with SQL Server 7.0 and Exchange 5.5 SP2
316749 PRB:PRB:在使用大量数据库时可能没有足够的虚拟内存
返回页首

优先级提升

默认情况下,优先级提升设置为 0,这样,无论您是在单处理器计算机还是对称的多处理器 (SMP) 计算机上运行 SQL Server,SQL Server 都会以普通优先级运行。如果将优先级提升设置为 1,SQL Server 进程将以较高的优先级运行。此设置不会使 SQL Server 进程以最高的操作系统优先级运行。

根据实际的支持经验,您不必使用优先级提升来获取较佳的性能。如果您确实使用优先级提升,在某些情况下,可能会干扰服务器的正常运行。因此,除了非常特殊的情况以外,您不应使用它。例如,“Microsoft 产品支持服务”可能会在调查性能问题时使用优先级提升

重要说明:对于正在运行 SQL Server 的群集服务器,请不要使用优先级提升

返回页首

设置工作集大小

不要更改设置工作集大小的默认设置。使用默认值 0,Windows NT 或 Windows 2000 虚拟内存管理器可以确定 SQL Server 的工作集大小。安装 SQL Server 时,安装程序会自动指示 Windows NT 或 Windows 2000 优化网络应用程序的性能。因此,Windows NT 或 Windows 2000 虚拟内存管理器进行极少的工作集剪裁,从而使得对 SQL Server 实例工作集造成的干扰最少。

更改此设置通常不会带来任何性能方面的好处。根据实际的支持案例,更改此设置带来的损害通常比带来的好处多。

如果更改设置工作集大小,还可能会导致 SQL Server 出现错误消息 844 或 845。有关 844 和 845 错误消息的常见原因的详细信息,请参阅本文的“参考”部分。

返回页首
参考
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
310834 PRB:Common Causes of Error Message 844 or Error Message 845
298475 HOW TO:成功解决应用程序问题所需的信息
243589 INF:解决 SQL Server 或更高版本上查询低性能的问题
243588 HOW TO:特殊查询性能问题的疑难解答
224587 HOW TO:SQL Server 应用程序性能的疑难解答
166967 INF:Proper SQL Server 6.5 Configuration Settings
254321 INF:Clustered SQL Server Do's, Don'ts, and Basic Warnings
297864 INF:Performance Considerations for Upgrade from SQL Server 6.5
返回页首
sp_configure configure performance tuning monitoring monitor recommend best practice
属性

文章 ID:319942 - 上次审阅时间:05/17/2011 00:29:00 - 修订版本: 4.0

Microsoft SQL Server 7.0 标准版, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2005 Express Edition, Microsoft SQL 2005 Server Workgroup, Microsoft SQL Server 2000 64-bit Edition, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 标准版, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Express with Advanced Services, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup

  • kbsqldeveloper kbhowto kbhowtomaster KB319942
反馈