系统配置与资源限制优化
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%时建议重建)。