CentOS下SQL Server性能优化策略
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'max server memory (MB)';
查看当前最大内存设置,调整max server memory
参数(如16GB),避免设置过高导致操作系统内存不足;同时设置min server memory
预留内存,防止内存压力下过度收缩。使用free -h
、top
命令监控内存使用,通过echo 1 > /proc/sys/vm/drop_caches
清理PageCache(谨慎使用,生产环境需评估影响)。/data
、日志在/logs
、tempdb在/tempdb
),减少磁盘争用。推荐使用XFS文件系统(对大数据集操作性能更优)。lscpu
命令查看CPU核心数,调整max degree of parallelism
(MAXDOP)参数(建议设置为CPU核心数的1/2~1/4),优化大查询的并行处理能力。EXEC sp_configure 'max server memory (MB)', 16384;RECONFIGURE;
设置最大内存(示例为16GB),确保操作系统和其他服务有足够内存;监控sys.dm_os_sys_memory
视图(查看系统内存状态)、sys.dm_os_memory_clerks
视图(查看SQL Server内存分配),及时调整内存配置。sys.dm_db_file_space_usage
),防止空间耗尽。WHERE
、JOIN
、ORDER BY
的列创建索引(如主键、外键列);避免过度索引(每个索引会增加写操作开销);使用覆盖索引(包含查询所需的所有列)减少回表操作;定期重建或重组碎片化索引(ALTER INDEX ... REBUILD
/REORGANIZE
),通过sys.dm_db_index_physical_stats
视图监控碎片率(碎片率>30%时重建,10%~30%时重组)。SELECT *
,只查询需要的列;使用EXPLAIN
分析查询执行计划(查看是否使用了索引、是否存在全表扫描);优化复杂查询(如拆分嵌套子查询为JOIN
、避免OR
条件过多);使用高效分页技术(如OFFSET-FETCH
或存储过程),减少大数据量分页时的性能消耗;避免在索引列上使用函数(如WHERE YEAR(create_time) = 2025
),否则会导致索引失效。UPDATE STATISTICS table_name
),确保查询优化器生成最优执行计划;每月执行索引重建/重组(根据碎片率);每日执行备份(完整备份+差异备份+事务日志备份,根据恢复模式调整),防止数据丢失。perfmon
)监控关键指标(如CPU使用率、内存使用率、磁盘I/O、查询执行时间);通过动态管理视图(DMVs)(如sys.dm_exec_query_stats
查看慢查询、sys.dm_os_wait_stats
查看等待类型)定位性能瓶颈;使用sqlcmd
或bcp
工具进行批量数据操作(如导入/导出),提高数据处理效率。