SQL Server参数如何优化设置?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 参数 正文
  1. 服务器级配置参数:在 SQL Server 实例级别设置,影响整个实例。
  2. 数据库级配置选项:在单个数据库级别设置,影响特定数据库。

下面我将从这两个维度,结合不同版本(传统 sp_configure 和现代的基于 ALTER SERVER CONFIGURATION 的方式),为您详细梳理 SQL Server 的关键参数设置。

sql server参数设置
(图片来源网络,侵删)

服务器级配置参数

服务器级参数控制着 SQL Server 实例的内存、I/O、连接、高级功能等核心行为。

查看和修改参数的方法

在 SQL Server 2012 及更高版本中,推荐使用图形化界面和现代的 T-SQL 命令。

使用 SQL Server Management Studio (SSMS)

  1. 连接到您的 SQL Server 实例。
  2. 对象资源管理器 中,右键点击服务器名称,选择 “属性” (Properties)
  3. 在弹出的窗口中,您可以看到多个页面,如 “内存”“处理器”“高级”“连接” 等,每个页面都包含一组相关的配置选项。

使用 T-SQL 命令

sql server参数设置
(图片来源网络,侵删)
  • 查看所有参数

    -- 显示所有运行配置值
    EXEC sp_configure;
    -- 显示所有高级配置选项
    EXEC sp_configure 'show advanced options', 1;
    RECONFIGURE;
    EXEC sp_configure;
  • 修改参数

    -- 步骤1:更新配置值(不立即生效)
    EXEC sp_configure 'parameter_name', 'value';
    -- 步骤2:让配置立即生效(RECONFIGURE WITH OVERRIDE 用于某些需要强制生效的参数)
    RECONFIGURE;

    注意: 对于一些关键参数,可能需要重启 SQL Server 服务才能生效。

关键服务器级参数详解

A. 内存相关

参数 描述 推荐设置/说明
max server memory (最重要) 设置 SQL Server 可以使用的最大内存量(MB)。 必须设置! 不要让 SQL Server 无限制地使用所有内存,建议设置为物理内存的 70%-80%,为操作系统和其他应用程序留出足够空间,如果服务器上只运行 SQL Server,可以设置到 90% 左右。
min server memory 设置 SQL Server 可以使用的最小内存量(MB)。 通常设为 0,让 SQL Server 根据负载动态增长,但如果知道应用有稳定的最小内存需求,可以设置一个合理的值。
awe enabled 在 32 位系统上,启用地址窗口扩展以使用超过 4GB 的物理内存。 仅适用于 32 位 SQL Server,64 位系统上此参数无效,SQL Server 可以自动使用所有可用内存。

B. CPU 和并行处理相关

参数 描述 推荐设置/说明
max degree of parallelism 控制单个查询可以使用的最大处理器数(并行度)。 重要调优参数。
- 0 (默认): SQL Server 自动决定并行度。
- 1: 禁用所有并行查询。
- >1: 限制并行查询的最大线程数,对于 OLTP 系统,常设置为 1 或 8,以减少资源争用,对于报表和分析系统,可以设置为 0 或更高
cost threshold for parallelism 查询优化器估计的成本必须超过此值,才考虑使用并行计划。 默认值是 5,对于高并发 OLTP 系统,可以适当调高(如 20-50),以避免小查询也启动并行,导致 CPU 争用。

C. 网络和连接相关

参数 描述 推荐设置/说明
remote access 控制是否允许远程连接到此 SQL Server 实例。 重要安全参数。
- 0: 禁止所有远程连接。
- 1 (默认): 允许远程连接,如果应用和数据库在同一台服务器,可以设为 0 以增强安全性。
remote login timeout 远程连接尝试在超时前等待的秒数。 默认 10 秒,可以根据网络状况调整。
remote proc trans 控制分布式事务中是否对远程过程调用使用 MS DTC(分布式事务协调器)。 默认 0,通常保持默认值。

D. 高级和安全相关

参数 描述 推荐设置/说明
xp_cmdshell 允许执行操作系统命令。 重要安全风险! 默认在 SQL Server 2005 及以后版本中是 禁用 的,除非有绝对必要且已做好充分安全控制,否则不要启用,启用方法:
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
contained database authentication 启用包含数据库认证。 包含数据库是 SQL Server 的一种高级功能,允许数据库包含所有用户元数据,使其更容易迁移,默认为 0。
backup compression default 设置所有备份的默认压缩行为。 强烈推荐设置为 1 (开启),备份压缩可以显著减少备份文件大小和 I/O,对性能影响很小,但会增加一定的 CPU 负载。

数据库级配置选项

这些选项针对单个数据库,可以通过 ALTER DATABASE 命令进行设置。

sql server参数设置
(图片来源网络,侵删)

查看和修改数据库级选项

查看当前设置

-- 查看所有数据库的选项
SELECT name, is_auto_create_stats_on, is_auto_update_stats_on, 
       is_recursive_triggers_on, is_trustworthy_on 
FROM sys.databases;
-- 查看特定数据库的选项
ALTER DATABASE YourDatabaseName SET;

修改设置

ALTER DATABASE YourDatabaseName
SET [option_name] = ON/OFF;

关键数据库级选项

选项 描述 推荐设置/说明
AUTO_CREATE_STATISTICS 当查询需要但不存在统计信息时,自动创建。 强烈推荐保持 ON (默认),这是查询优化器做出正确决策的基础,对性能至关重要。
AUTO_UPDATE_STATISTICS 当数据发生变化导致统计信息过期时,自动更新。 强烈推荐保持 ON (默认),过期的统计信息是查询性能差的常见原因。
AUTO_UPDATE_STATISTICS_ASYNC 异步自动更新统计信息。 默认 OFF,设置为 ON 可以减少查询等待统计信息更新的时间,但可能导致查询使用略微过时的统计信息,适合高并发 OLTP 系统。
RECOVERY (非常重要) 设置数据库的恢复模式,决定事务日志如何管理。 三种模式
- SIMPLE: 简单恢复,不记录事务日志,无法进行点恢复,风险高,但日志空间占用小,适合开发、测试或只读数据。
- FULL: 完整恢复,完整记录所有事务,可以进行到任意时间点的恢复,适合生产环境,但需要定期备份日志。
- BULK_LOGGED: 大容量日志恢复,对大容量操作(如批量导入)进行最小日志记录,节省日志空间,但仍能恢复到日志备份点,适合数据加载场景。
TRUSTWORTHY 指示 SQL Server 是否信任数据库内的代码(如模块)以及该数据库中的用户。 安全风险! 默认 OFF,设置为 ON 可能导致安全漏洞,允许低权限用户提升权限,除非在特定场景下(如跨数据库所有权链),否则保持 OFF。
DATE_CORRELATION_OPTIMIZATION 当两个表在查询中通过外键关联,并且数据同时插入时,启用此选项可以优化连接。 默认 OFF,对于特定的 ETL 或数据仓库场景,如果确认表数据有强相关性,可以尝试开启。

其他重要配置

除了上述参数,还有一些重要的配置项不属于传统意义上的“参数”,但对性能和功能同样关键。

SQL Server Agent 作业配置

SQL Server Agent 负责执行计划任务,如备份、作业等,其配置(如作业历史记录的保留时间、最大作业历史记录大小)在 SSMS 的 SQL Server Agent 属性 中设置。

TempDB 配置

TempDB 是一个全局数据库,供所有用户会话使用,其性能直接影响整个实例。

  • 数据文件和日志文件:TempDB 的性能至关重要,建议将数据文件和日志文件放在独立的、高速的物理磁盘上(最好是 SSD)。
  • 文件数:根据 CPU 核心数,为 TempDB 创建多个数据文件(核心数 * 2 到 4 个),并将它们放在不同的物理磁盘上,以减少 I/O 竞争。
  • 初始大小和自动增长:为 TempDB 设置一个合理的初始大小,避免其频繁自动增长,将自动增长设置为按固定大小(如 128MB 或 256MB)增长,而不是按百分比。

跟踪标志

跟踪标志是用于诊断和临时改变 SQL Server 行为的“开关”,它们应该在 Microsoft 支持人员的指导下使用,不应在生产环境中随意启用。

  • 查看当前启用的跟踪标志
    DBCC TRACESTATUS(-1);
  • 临时启用跟踪标志(重启后失效):
    DBCC TRACEON(1234, -1);
  • 永久启用跟踪标志(需要重启服务):
    DBCC TRACEON(1234, -1);
    RECONFIGURE;

总结与最佳实践

  1. 不要随意修改:许多参数的默认值已经过优化,修改前务必理解其作用和潜在影响。
  2. 从小处着手:一次只修改一个参数,并观察其对系统的影响,不要一次性修改多个参数。
  3. 性能监控是前提:修改参数后,必须使用性能监视工具(如 SQL Server ProfilerExtended EventsDMVsWindows Performance Monitor)来监控效果。
  4. 区分 OLTP 和 DW:在线事务处理和分析系统的参数调优策略完全不同,OLTP 侧重于并发和低延迟,DW 侧重于高吞吐量和并行处理。
  5. 安全第一:对于像 xp_cmdshell 这样的高风险参数,默认禁用是正确的选择。
  6. 文档化你的更改:记录下所有修改过的参数及其原因,方便日后排查问题。

希望这份详细的指南能帮助您更好地理解和配置 SQL Server!

-- 展开阅读全文 --
头像
Vivo Xplay6参数配置亮点有哪些?
« 上一篇 今天
AMD5600 CPU参数有哪些核心性能亮点?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]