Ubuntu上SQL Server性能调优关键参数与策略
/etc/security/limits.d/mssql-server.conf,增加以下内容(避免SQL Server进程因文件描述符不足崩溃):mssql soft nofile 1048576mssql hard nofile 1048576mssql soft nproc 131072mssql hard nproc 131072tuned工具创建自定义配置(如/usr/lib/tuned/mssql/tuned.conf),调整vm.swappiness(降低内存换页概率,建议设为10)、vm.dirty_background_ratio(脏页后台写入阈值,建议设为5)等参数,提升I/O效率。mssql-conf命令设置SQL Server最大内存(避免占用全部系统内存):sudo /opt/mssql/bin/mssql-conf set memory.target=4G(根据服务器内存调整,如8GB服务器可设为6-7G);EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'max degree of parallelism', 2; RECONFIGURE;ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT;DBCC SHRINKFILE (数据库名_log, 1);UPDATE STATISTICS(更新统计信息,优化查询计划)和REBUILD INDEX(重建碎片化索引,建议碎片率>30%时执行)。SELECT *(仅查询所需列),减少全表扫描;优化WHERE子句(避免对字段使用函数或NULL判断,如WHERE column = 1优于WHERE column IS NOT NULL);EXPLAIN分析查询执行计划,识别全表扫描、索引缺失等问题,针对性优化。top(实时查看CPU/内存占用)、htop(增强版top)、vmstat 1(每秒刷新虚拟内存统计)、iostat -x 1(监控磁盘I/O负载);UPDATE STATISTICS [数据库名].[架构名].[表名];;ALTER INDEX ALL ON [表名] REBUILD;(或使用维护计划自动执行);DBCC CHECKDB ([数据库名]);(修复表错误)。iperf测试网络带宽,启用高性能网络模块(如TCP优化);systemctl disable关闭非关键服务(如Apache、Nginx),减少系统资源消耗。