SQL Server 2022 的“高级”服务器属性页面
你提供的截图是 SQL Server 2022 的“高级”服务器属性页面,其中包含多个关键配置项。结合你之前提到的硬件环境(24核 CPU + 100GB 内存)和业务场景(金蝶云星空 V9.1 演示版/生产环境),以下是针对该页面的逐项优化建议:
✅ 一、核心优化项(必须调整)
1. 🚫 FILESTREAM 访问级别 → 已禁用
- 当前状态:已禁用
- 建议:✅ 保持禁用
- 除非你的金蝶系统明确使用了 FILESTREAM 存储大文件(如附件、图片等),否则无需启用。
- 启用会增加复杂性和潜在性能开销。
💡 金蝶云星空默认不使用 FILESTREAM,所以“已禁用”是正确的。
2. ⚙️ 并行相关设置(重点优化!)
▶ 并行的开销阈值 = 5
- 问题:太小!会导致大量简单查询也启用并行计划,浪费 CPU 资源。
- 建议改为:
50只有执行成本 > 50 的查询才考虑并行,避免小查询“杀鸡用牛刀”。
▶ 查询等待值 = -1
- 含义:无限等待并行线程资源。
- 建议改为:
30或60(秒)防止某个查询因等待并行资源而阻塞太久,影响其他用户。
▶ 锁 = 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 表示不记录。
- 建议改为:
5或10便于监控和排查死锁/阻塞问题。
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 内存被换页到磁盘(提升稳定性)
🔧 操作步骤:
- 打开
gpedit.msc→ 计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 用户权利分配 - 找到 “锁定内存中的页面”
- 添加 SQL Server 服务启动账户(通常是
NT SERVICE\MSSQLSERVER或自定义域账户) - 重启 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 | 🔴 必须立即改 |
| 最小内存 | 0 | 40GB(可选) | 🟡 推荐 |
| 并行度 | 默认(可能24) | 8 | 🟡 推荐 |
| 成本阈值 | 默认5 | 50 | 🟡 推荐 |
| 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 维护脚本模板。欢迎继续提问!
祝你系统运行稳定高效!🚀