1. 设置最大服务器内存(Max Server Memory):在SQL Server Management Studio中,右键服务器属性,内存选项卡,设置最大服务器内存值。通常设置为总物理内存的70-80%,留给OS和其他进程。示例:总内存128GB,设置为90GB。
CSDN博客
SQL Server内存优化第一步就是配置Max Server Memory。默认情况下SQL Server会尝试使用所有可用内存,这会导致OS内存不足,系统变慢。通过限制Max Server Memory,可以确保OS有足够的内存。计算公式:总内存 - (OS保留4-8GB + 其他服务内存)。
Microsoft Docs
最小服务器内存(Min Server Memory)和最大服务器内存(Max Server Memory)用于控制SQL Server缓冲池大小。动态分配内存时,缓冲池会根据工作负载调整,但设置上限防止内存争用。使用sp_configure 'max server memory (MB)', 81920; RECONFIGURE; 来设置80GB上限。
知乎专栏
提升性能的关键是监控内存使用:使用DMV如sys.dm_os_buffer_descriptors查看缓冲池命中率。目标是95%以上。如果命中率低,增加Max Server Memory或优化查询减少内存消耗。锁定页面内存(Lock Pages in Memory)权限给SQL服务账号,防止内存被换出。
博客园文章
索引优化减少内存压力:重建碎片化索引,使用ALTER INDEX REBUILD。计划缓存清理:DBCC FREEPROCCACHE针对特定计划。资源调控器(Resource Governor)限制用户内存使用,避免单查询耗尽内存。
SQLServerCentral
性能提升:启用TF 1118跟踪标志,全表扫描时均匀分配页面。设置成本阈值(Cost Threshold for Parallelism)和最大并度(Max Degree of Parallelism)避免过度并行消耗内存。监控Page Life Expectancy(PLE),目标>300秒。
简书教程
步骤:1.检查当前内存使用SELECT total_physical_memory_kb/1024 AS total_mb FROM sys.dm_os_sys_memory; 2.调整max server memory。3.重启实例生效。4.验证PerfMon计数器:SQLServer:Memory Manager\Target Server Memory。
FAQ
Q: Max Server Memory设置多大合适?
A: 视总内存而定,单实例建议总内存的75%,多实例均匀分配。
Q: PLE低怎么办?
A: 增加内存上限,优化查询,检查数据文件预读。
Q: 怎么给SQL锁定页面内存?
A: 在组策略中给SQL服务账号添加“锁定页面”用户权限,重启服务。
Q: 内存不足时SQL会做什么?
A: 触发内存压力缓解,收缩缓冲池,导致更多物理IO,性能下降。