如何在CentOS上优化SQL Server数据库
mssql-conf工具限制SQL Server最大内存使用(避免占用全部系统内存),例如设置max server memory (MB)为物理内存的70%-80%(如16GB内存可设为12GB),保留足够内存给系统及其他应用;同时确认memory.target参数与最大内存设置一致。max worker threads(最大工作线程数),默认值通常满足多数场景,若存在大量并发查询,可适当增加(如200线程);确保SQL Server进程优先级合理(默认即可),避免被系统或其他应用抢占CPU资源。WHERE、JOIN、ORDER BY的列创建索引(如主键、外键列),避免过度索引(过多索引会增加写操作开销);定期使用sys.dm_db_index_physical_stats动态管理视图分析索引碎片,对碎片率超过30%的索引执行REBUILD(碎片率高时)或REORGANIZE(碎片率中等时)操作,保持索引效率。SELECT *(仅选择需要的列),减少数据传输量;使用EXPLAIN或SQL Server Management Studio(SSMS)的查询分析器查看执行计划,识别全表扫描、嵌套子查询等问题,改用索引覆盖查询或JOIN替代子查询;优化分页逻辑(如使用OFFSET-FETCH或存储过程),避免大偏移量分页导致的性能下降。UPDATE STATISTICS),确保查询优化器能生成最优执行计划;每月清理无用数据(如过期日志、临时表),减少数据库体积,提升操作效率。top(CPU使用率)、free -m(内存使用情况)、iostat(磁盘I/O)、vmstat(内存与磁盘交互)等命令监控系统资源,快速定位瓶颈(如CPU持续高负载可能是查询未优化,磁盘I/O高可能是索引碎片多)。sys.dm_os_sys_memory查看SQL Server内存使用详情(如物理内存是否充足),sys.dm_exec_query_stats分析慢查询(按执行时间排序,找出最耗时的查询),sys.dm_os_wait_stats查看等待类型(如PAGEIOLATCH表示磁盘I/O等待,LCK表示锁等待),针对性解决性能问题。SELECT权限,避免授予ALTER、DROP等高危权限),减少潜在安全风险。BACKUP DATABASE命令或SQL Server Agent自动执行;定期测试备份恢复流程(如模拟数据库损坏恢复),确保备份有效性,避免数据丢失。