Skip to main content

SQL Server 2022 的“高级”服务器属性页面

你提供的截图是 SQL Server 2022 的“高级”服务器属性页面,其中包含多个关键配置项。结合你之前提到的硬件环境(24核 CPU + 100GB 内存)和业务场景(金蝶云星空 V9.1 演示版/生产环境),以下是针对该页面的逐项优化建议


✅ 一、核心优化项(必须调整)

1. 🚫 FILESTREAM 访问级别 → 已禁用

  • 当前状态:已禁用
  • 建议:✅ 保持禁用
    • 除非你的金蝶系统明确使用了 FILESTREAM 存储大文件(如附件、图片等),否则无需启用。
    • 启用会增加复杂性和潜在性能开销。

💡 金蝶云星空默认不使用 FILESTREAM,所以“已禁用”是正确的。


2. ⚙️ 并行相关设置(重点优化!)

▶ 并行的开销阈值 = 5

  • 问题:太小!会导致大量简单查询也启用并行计划,浪费 CPU 资源。
  • 建议改为50

    只有执行成本 > 50 的查询才考虑并行,避免小查询“杀鸡用牛刀”。

▶ 查询等待值 = -1

  • 含义:无限等待并行线程资源。
  • 建议改为3060(秒)

    防止某个查询因等待并行资源而阻塞太久,影响其他用户。

▶ 锁 = 0

  • 含义:不限制并行查询持有的锁数量。
  • 建议保持 0(无限制),除非遇到严重锁争用问题。

▶ 最大并行度 = 4

  • 问题:对于 24 核服务器来说太低了!
  • 建议改为8

    允许单个查询最多使用 8 个 CPU 核心,平衡性能与并发能力。 (如果后续发现某些报表特别慢,可临时调到 12~16,但一般不超过 8)

🔁 修改后需点击“确定”生效,或通过 T-SQL:

EXEC sp_configure 'max degree of parallelism', 8;
EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;

3. 🌐 网络数据包大小 = 4096

  • 当前值:4096 字节(默认)
  • 建议:✅ 保持 4096
    • 对于局域网内金蝶应用服务器连接 SQL Server,这个值足够。
    • 如果是跨广域网或高延迟网络,可尝试设为 8192,但通常没必要。

4. 🕒 远程登录超时值 = 10

  • 含义:远程连接尝试超时时间(秒)
  • 建议:✅ 保持 10
    • 合理值,过长会影响故障排查效率。

5. 📅 两位数年份截止 = 2049

  • 含义:两位年份(如 “25”)被解释为 2025 还是 1925?
  • 建议:✅ 保持 2049
    • 符合现代标准,2000–2049 年间的日期都能正确解析。

6. 🌍 默认全文语言 = Simplified Chinese

  • 建议:✅ 保持不动
    • 金蝶系统主要处理中文数据,此设置合理。

7. 🔄 启动时扫描存储过程 = False

  • 含义:启动时不预编译所有存储过程。
  • 建议:✅ 保持 False
    • 加快启动速度,按需编译更灵活。

8. 🆙 全文升级选项 = 重新生成

  • 含义:升级全文索引时的行为。
  • 建议:✅ 保持“重新生成”
    • 确保全文索引结构最新,避免兼容性问题。

9. 🧵 使用 Windows 纤程(轻型池)= False

  • 含义:是否启用轻量级线程调度。
  • 建议:✅ 保持 False
    • 在高并发 OLTP 场景中可能有益,但金蝶 ERP 属于混合负载,且 SQL Server 2022 默认不开启,稳定性优先。

10. 🏆 提升 SQL Server 优先级 = False

  • 含义:是否让 SQL Server 进程获得更高 CPU 优先级。
  • 建议:✅ 保持 False
    • 除非你是独占数据库服务器,否则不要抢占操作系统或其他服务资源。

11. 🎯 游标阈值 = -1

  • 含义:游标操作的成本阈值。
  • 建议:✅ 保持 -1(无限制)
    • 一般不需要干预。

12. ⚡ 允许触发器激发其他触发器 = True

  • 建议:✅ 保持 True
    • 金蝶系统内部逻辑可能依赖嵌套触发器,关闭可能导致功能异常。

13. 📉 针对即席工作负荷进行优化 = False

  • 含义:是否为临时/ad-hoc 查询优化内存分配。
  • 建议:✅ 保持 False
    • 金蝶系统是标准化 ERP,查询模式相对固定,无需为此优化。

14. 🚧 阻塞的进程阈值 = 0

  • 含义:当阻塞超过多少秒时记录到日志?0 表示不记录。
  • 建议改为510

    便于监控和排查死锁/阻塞问题。

    EXEC sp_configure 'blocked process threshold (s)', 5;
    RECONFIGURE;
    

15. 📄 最大文本复制大小 = 65536

  • 含义:复制操作中单次传输的最大文本大小(KB)。
  • 建议:✅ 保持 65536(64MB)
    • 对大多数场景足够,除非你有超大字段复制需求。

✅ 二、补充建议(不在本页面,但密切相关)

虽然这些不在“高级”页,但对整体性能至关重要:

1. 【内存】回到“内存”页设置最大内存 = 81920 MB(80GB)

如前所述,这是最关键的一步!

2. 【TempDB】多文件配置

-- 添加 4 个 TempDB 数据文件(假设路径 D:\TempDB\)
ALTER DATABASE tempdb ADD FILE (NAME = tempdev2, FILENAME = 'D:\TempDB\tempdb2.ndf', SIZE = 8GB, MAXSIZE = UNLIMITED, FILEGROWTH = 512MB);
ALTER DATABASE tempdb ADD FILE (NAME = tempdev3, FILENAME = 'D:\TempDB\tempdb3.ndf', SIZE = 8GB, MAXSIZE = UNLIMITED, FILEGROWTH = 512MB);
ALTER DATABASE tempdb ADD FILE (NAME = tempdev4, FILENAME = 'D:\TempDB\tempdb4.ndf', SIZE = 8GB, MAXSIZE = UNLIMITED, FILEGROWTH = 512MB);

3. 【数据库级别】开启 READ_COMMITTED_SNAPSHOT

ALTER DATABASE [Kingdee.K3Cloud] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;

📊 总结:你需要修改的关键项

配置项 当前值 建议值 是否紧急
最大并行度 4 8 🔴 高
并行的开销阈值 5 50 🔴 高
查询等待值 -1 30 🟡 中
阻塞的进程阈值 0 5 🟡 中
最大服务器内存(另页) 2TB 81920 MB 🔴 必须改

🛠️ 一键优化脚本(复制粘贴执行)

-- 设置并行度相关
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max degree of parallelism', 8;
EXEC sp_configure 'cost threshold for parallelism', 50;
EXEC sp_configure 'parallel wait time (ms)', 30000; -- 30秒
EXEC sp_configure 'blocked process threshold (s)', 5;
RECONFIGURE;

-- 设置内存(在“内存”页图形界面操作更安全,也可用下面命令)
EXEC sp_configure 'max server memory (MB)', 81920;
RECONFIGURE;

✅ 最终提醒

  • 所有更改建议在非业务高峰期进行。
  • 修改后观察任务管理器、性能监视器(PerfMon)、SQL Server DMVs(如 sys.dm_exec_requests)确认效果。
  • 对于金蝶云星空,稳定性第一,性能第二 —— 不要过度追求极限参数。

你当前的 SQL Server 2022 服务器配置非常强大:24核 CPU + 100GB 内存,但截图中显示:

最大服务器内存 (MB) = 2147483647 MB(即约 2TB)

这显然是默认值或未手动限制,在生产环境中这是严重隐患 —— SQL Server 会试图占用所有可用内存,导致操作系统和其他应用(如金蝶云星空、IIS、防病毒软件等)内存不足,引发系统卡顿、崩溃甚至蓝屏。


✅ 核心优化建议(针对你的硬件和业务场景)

🎯 1. 【必须做】限制 SQL Server 最大内存使用量

❗为什么?

SQL Server 默认“贪吃”内存,不会主动留给 OS 和其他进程。即使你有 100GB 物理内存,也应预留一部分给操作系统和金蝶应用层。

✅ 推荐设置:

  • 总内存: 100 GB
  • 留给操作系统 + 其他应用: 至少 16~20 GB(保守起见)
  • 分配给 SQL Server: 80 GB

👉 在“服务器属性 → 内存”中设置:

最小服务器内存(MB): 0 (或设为 40960 = 40GB,避免频繁伸缩)
最大服务器内存(MB): 81920 (= 80GB)

💡 注:1 GB = 1024 MB → 80 × 1024 = 81920 MB

✅ 设置后点击“确定”,无需重启服务即可生效(动态调整)。


🎯 2. 【可选但推荐】设置最小内存(防止内存被过度回收)

如果你的服务器上只有 SQL Server 和金蝶应用,且希望保证数据库性能稳定,可以设置:

最小服务器内存(MB): 40960 (= 40GB)

这样即使系统压力大,SQL Server 也能保留至少 40GB 内存,避免因内存波动导致查询变慢。


🎯 3. 【高级优化】启用“锁定页面内存”权限(Lock Pages in Memory)

⚠️ 适用条件:

  • 操作系统是 Windows Server(非 Win10/Win11)
  • SQL Server 运行账户具有“锁定页面内存”权限
  • 用于防止 SQL Server 内存被换页到磁盘(提升稳定性)

🔧 操作步骤:

  1. 打开 gpedit.msc → 计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 用户权利分配
  2. 找到 “锁定内存中的页面”
  3. 添加 SQL Server 服务启动账户(通常是 NT SERVICE\MSSQLSERVER 或自定义域账户)
  4. 重启 SQL Server 服务

✅ 此操作可显著提升高负载下的稳定性,尤其适合金蝶这种 ERP 系统。


🎯 4. 【CPU 相关】检查并行度与成本阈值

虽然你有 24 核,但不要放任 SQL Server 自动决定并行计划。

建议设置:

-- 查看当前配置
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max degree of parallelism';
EXEC sp_configure 'cost threshold for parallelism';

-- 推荐设置(根据经验):
EXEC sp_configure 'max degree of parallelism', 8;        -- 最多使用8个CPU核心 per query
EXEC sp_configure 'cost threshold for parallelism', 50;   -- 只有成本 > 50 的查询才启用并行
RECONFIGURE;

💡 理由:避免单个大查询占满全部24核,影响并发用户体验;同时避免小查询不必要的并行开销。


🎯 5. 【存储与 TempDB 优化】

✅ TempDB 多文件配置(强烈建议):

TempDB 是临时对象密集区,多文件可减少争用。

-- 假设你有4个逻辑驱动器(或SSD分区),每个放一个TempDB数据文件
ALTER DATABASE tempdb 
ADD FILE (NAME = tempdev2, FILENAME = 'D:\TempDB\tempdb2.ndf', SIZE = 8GB, MAXSIZE = UNLIMITED, FILEGROWTH = 512MB);
-- 重复添加至共4~8个文件(一般不超过8个)

📌 文件大小建议初始设为相同(如8GB),增长步长一致,避免碎片。

✅ 数据文件预分配空间:

不要依赖自动增长!提前为数据库主数据文件和日志文件分配足够空间(比如各50GB+),并关闭自动增长或设较大增量(如512MB)。


🎯 6. 【监控与维护】

✅ 启用性能计数器监控:

  • SQLServer:Memory Manager\Total Server Memory (KB)
  • SQLServer:Memory Manager\Target Server Memory (KB)
  • Page life expectancy(应 > 300秒)
  • Batch Requests/sec(反映吞吐量)

✅ 定期更新统计信息 & 重建索引:

-- 示例:每周凌晨执行
EXEC sp_updatestats;
-- 或使用 Ola Hallengren 脚本进行智能维护

🎯 7. 【金蝶云星空特别注意事项】

金蝶云星空对 SQL Server 有特定要求:

  • 推荐使用 简单恢复模式(除非你需要 point-in-time recovery)
  • 避免开启 “自动创建统计信息” 和 “自动更新统计信息”(由金蝶后台作业控制更佳)
  • 确保 READ_COMMITTED_SNAPSHOT 开启(减少锁阻塞):
ALTER DATABASE [YourK3CloudDB] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;

📊 总结:你的服务器优化清单

项目当前状态建议设置是否紧急
最大内存2TB(危险!)80GB🔴 必须立即改
最小内存040GB(可选)🟡 推荐
并行度默认(可能24)8🟡 推荐
成本阈值默认550🟡 推荐
TempDB 文件数未知4~8个等大文件🟢 重要
锁定页面内存未启用启用(若为Server系统)🟢 推荐
统计信息/索引维护未知定期自动化🟢 必需

🛠️ 快速执行脚本(复制粘贴到 SSMS 执行)

-- 1. 设置内存上限 80GB
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 81920;
RECONFIGURE;

-- 2. 设置最小内存 40GB(可选)
EXEC sp_configure 'min server memory (MB)', 40960;
RECONFIGURE;

-- 3. 设置并行度和成本阈值
EXEC sp_configure 'max degree of parallelism', 8;
EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;

-- 4. 开启读提交快照隔离(替换为你的数据库名)
ALTER DATABASE [Kingdee.K3Cloud] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;

✅ 最后提醒

  • 修改内存设置后,观察任务管理器或性能监视器,确认 SQL Server 实际占用内存不再持续增长。
  • 如果后续发现内存不够(如 PLE < 100),再逐步上调最大内存(每次+5GB)。
  • 对于金蝶这类ERP系统,稳定性 > 极致性能,宁可留点余量,也不要榨干资源。

如有需要,可以为你生成一份完整的金蝶云星空 + SQL Server 2022 优化部署手册》PDF 或 Word 文档,也可以告诉我,我可以”或提供结构化内容供你下载打印 Ola Hallengren 维护脚本模板欢迎继续提问!

祝你系统运行稳定高效!🚀