温馨提示×

centos如何优化sqlserver

小樊
39
2026-09-18 13:26:44
栏目: 云计算

在 CentOS 上运行 SQL Server(Microsoft SQL Server on Linux) 时,优化可以从 系统层、SQL Server 层、存储、参数、监控 几个方面来做。下面是一套较完整的优化思路和实践建议。


一、系统层优化(CentOS)

1. 内核与资源限制

SQL Server 对内存和文件描述符较敏感。

# 编辑 limits.conf
vi /etc/security/limits.conf

添加:

mssql soft nofile 65536
mssql hard nofile 65536
mssql soft nproc 65536
mssql hard nproc 65536

2. 关闭透明大页(THP)

THP 会影响 SQL Server 性能:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

永久生效:

vi /etc/rc.d/rc.local

添加上面两行,并:

chmod +x /etc/rc.d/rc.local

3. 调整 swappiness

避免频繁 swap:

sysctl -w vm.swappiness=10

永久:

echo "vm.swappiness=10" >> /etc/sysctl.conf

二、存储与文件系统优化(非常重要)

1. 使用 XFS 文件系统

SQL Server 官方推荐 XFS

mkfs.xfs /dev/sdb

2. 挂载参数优化

vi /etc/fstab

示例:

/dev/sdb /var/opt/mssql xfs defaults,noatime,nodiratime 0 0

3. 磁盘 IO 建议

  • 数据盘、日志盘、tempdb 分开
  • 使用 SSD / NVMe
  • RAID10 优于 RAID5

目录建议:

/var/opt/mssql/data
/var/opt/mssql/log
/var/opt/mssql/tempdb

三、SQL Server 配置优化

1. 内存配置(关键)

防止 SQL Server 吃光系统内存:

EXEC sp_configure 'max server memory', 8192; -- 示例 8GB
RECONFIGURE;

原则:

系统内存 - (2GB + 其他服务) = SQL Server 最大内存

2. Tempdb 优化

  • 多个 tempdb 数据文件(CPU 核数 ≤ 8 时 1:1)
ALTER DATABASE tempdb
ADD FILE (NAME = temp2, FILENAME = '/var/opt/mssql/tempdb/tempdb2.ndf', SIZE = 512MB);

3. 最大并行度(MAXDOP)

OLTP 系统建议:

EXEC sp_configure 'max degree of parallelism', 4;
RECONFIGURE;

4. 成本阈值

EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;

四、数据库设计与 SQL 优化

1. 索引优化

  • 避免全表扫描
  • 定期查看缺失索引:
SELECT * FROM sys.dm_db_missing_index_details;

2. 统计信息

UPDATE STATISTICS YourTable;

3. 慢查询分析

SELECT
    total_elapsed_time/execution_count AS avg_time,
    execution_count,
    text
FROM sys.dm_exec_query_stats
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
ORDER BY avg_time DESC;

五、服务与参数调优

1. 开启 SQL Server 代理

/opt/mssql/bin/mssql-conf set sqlagent.enabled true
systemctl restart mssql-server

2. 跟踪标志(可选)

/opt/mssql/bin/mssql-conf traceflag 3226 on

六、监控与维护

1. 系统监控

top
iostat -x 1
free -m

2. SQL Server 日志

cat /var/opt/mssql/log/errorlog

3. 定期维护

  • 索引重建
  • 日志备份
  • 数据库一致性检查(DBCC)

七、常见性能问题速查

问题 可能原因
CPU 高 缺少索引 / 并行度过高
IO 高 tempdb / 日志盘瓶颈
内存溢出 max server memory 未设
延迟高 网络 / 存储 / 锁

如果你愿意,可以告诉我:

  • CentOS 版本
  • SQL Server 版本(2019 / 2022)
  • 内存 / CPU / 磁盘情况
  • OLTP 还是 OLAP

我可以给你一套 针对性的优化配置参数。

0 踩