CentOS环境下SQL Server性能调优技巧
EXEC sp_configure 'max server memory (MB)', 值; RECONFIGURE;
命令限制SQL Server最大内存,保留10%以上内存给系统和其他应用(如CentOS内核、其他服务),避免内存耗尽导致系统崩溃。Max Degree of Parallelism (MAXDOP)
参数调整并行查询的CPU核心数(建议设置为CPU核心数的1/2~2/3,避免过多并行导致资源竞争)。noatime
选项(减少文件访问时间更新的开销)。/etc/sysctl.conf
文件,增加vm.swappiness
(降低交换分区使用,建议设置为10~30)、net.core.somaxconn
(增加TCP连接队列长度,建议设置为1024~2048),并通过sysctl -p
命令生效。EXEC sp_configure 'max server memory (MB)', 值; RECONFIGURE;
命令限制SQL Server最大内存(如16GB内存服务器可设置为12~14GB),避免占用过多系统内存。同时,设置min server memory (MB)
(如4GB),保证SQL Server有最低内存可用,防止频繁申请/释放内存。Cost Threshold for Parallelism (CTFP)
参数(默认5),设置并行执行的成本阈值(建议设置为20~50),避免小查询使用并行执行(增加开销);调整MAXDOP
参数(如设置为4~8),控制并行查询使用的CPU核心数,平衡并行效率与资源竞争。WHERE
、JOIN
、ORDER BY
的列创建索引(如主键、外键、高频查询字段),但避免过度索引(每个索引会增加插入/更新/删除的开销)。定期使用sys.dm_db_index_physical_stats
动态管理视图检查索引碎片,对碎片率超过30%的索引进行REBUILD
(碎片率高时)或REORGANIZE
(碎片率低时)操作。SELECT *
(只选择需要的列,减少数据传输量);用JOIN
代替子查询(减少嵌套查询的开销);使用EXPLAIN
或SQL Server Management Studio(SSMS)中的“执行计划”分析查询执行路径,找出性能瓶颈(如全表扫描、索引未使用);优化事务处理(缩短事务持续时间,减少锁持有时间,避免死锁)。INSERT INTO ... SELECT
、UPDATE ... FROM
)替代游标,提升查询速度。sys.dm_os_performance_counters
查看缓冲池命中率(应大于90%,低于则需增加内存),通过sys.dm_os_wait_stats
查看等待类型(如PAGEIOLATCH
表示磁盘I/O瓶颈)。UPDATE STATISTICS 表名
),确保查询优化器生成最优执行计划;每天备份数据库(全量+增量),并测试备份的可恢复性(避免备份失效)。