系统配置与资源限制优化
sudo apt update && sudo apt upgrade
,确保系统和SQL Server处于最新版本,获取性能优化补丁及安全修复。/etc/security/limits.d/mssql-server.conf
文件,增加SQL Server进程的文件描述符和进程数限制(如mssql soft nofile 1048576
、mssql hard nofile 1048576
),避免高并发下资源耗尽。sudo systemctl disable/disable service_name
停止非关键服务(如蓝牙、打印服务),释放系统资源供SQL Server使用。SQL Server自身配置调优
mssql-conf
工具设置最大内存(如sudo /opt/mssql/bin/mssql-conf set memory.target 4G
),避免SQL Server占用全部内存导致系统或其他应用饥饿;对于小型实例,可保留1-2GB内存给系统。ALTER DATABASE dbname SET RECOVERY SIMPLE
),减少事务日志增长,降低日志维护开销。查询与索引性能优化
SET SHOWPLAN_ALL ON
或SQL Server Management Studio(SSMS)的“显示实际执行计划”功能,识别全表扫描、不必要的子查询等问题;避免在WHERE子句中对字段使用函数(如WHERE YEAR(create_time) = 2025
),防止索引失效。WHERE
、JOIN
、ORDER BY
子句中的列)创建合适的索引(如B-tree索引);定期执行UPDATE STATISTICS dbname.table_name
更新统计信息,帮助查询优化器生成更优执行计划;通过sys.dm_db_index_usage_stats
视图监控索引使用情况,删除未使用或冗余索引。操作系统与内核调优
noatime
选项(如defaults,noatime
),减少文件访问时间更新带来的I/O开销。tuned
工具创建自定义配置文件(如/usr/lib/tuned/mssql/tuned.conf
),调整vm.swappiness
(设为10,减少交换分区使用)、vm.dirty_background_ratio
(设为10,控制脏页回写阈值)等参数,优化内存与磁盘I/O性能;或直接使用sysctl
命令临时调整(如sudo sysctl vm.swappiness=10
)。ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU = 0 TO 7
),减少跨节点内存访问延迟,提升多核CPU利用率。存储与I/O优化
/mnt/data
,日志文件放在/mnt/log
。监控与维护
top
、htop
(实时查看CPU、内存使用)、vmstat 1
(监控系统整体性能)、iostat -x 1
(查看磁盘I/O负载)等工具,定期检查系统资源瓶颈。DBCC CHECKDB dbname
检查数据库完整性,修复表或索引错误;使用UPDATE STATISTICS dbname
更新统计信息,确保查询优化器做出正确决策;通过ALTER INDEX ALL ON tablename REBUILD
重建碎片化严重的索引(碎片率超过30%时建议重建)。