温馨提示×

ubuntu如何优化sqlserver

小樊
47
2026-10-12 15:39:34
栏目: 云计算

在 Ubuntu 上运行 Microsoft SQL Server(mssql-server) 时,优化主要可以从 系统层、SQL Server 配置层、数据库设计、查询层面 四个方向来做。下面给你一套比较实用的优化清单。


一、Ubuntu 系统层优化

1. 内存与 Swap

SQL Server 对内存非常敏感。

# 查看内存
free -h

建议:

  • 物理内存 ≥ 4GB(生产建议 8GB+)
  • 禁用或减小 Swap
sudo swapoff -a

并在 /etc/fstab 中注释 swap 行


2. 文件系统优化(推荐 ext4 / xfs)

sudo mkfs.xfs /dev/sdX

挂载参数:

defaults,noatime,nodiratime

3. 内核参数优化

编辑 /etc/sysctl.conf:

vm.swappiness=1
vm.dirty_ratio=10
vm.dirty_background_ratio=5

应用:

sudo sysctl -p

4. 限制 SQL Server 内存(非常重要)

SQL Server 默认会吃光内存。

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 4096; -- 根据机器调整
RECONFIGURE;

二、SQL Server 配置优化

1. 查看当前配置

SELECT * FROM sys.configurations;

2. 并行与线程

EXEC sp_configure 'max degree of parallelism', 4;
EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;

3. Tempdb 优化(关键)

Ubuntu 上建议:

  • Tempdb 数据文件数 = CPU 核数(最多 8)
  • 文件大小一致
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, SIZE = 512MB);

三、数据库设计优化

1. 索引优化

-- 查看缺失索引
SELECT * FROM sys.dm_db_missing_index_details;
CREATE INDEX IX_xxx ON Table(col1, col2);

2. 统计信息

UPDATE STATISTICS TableName;

3. 避免

  • SELECT *
  • 在 WHERE 中对字段使用函数
  • 大事务

四、查询与执行计划优化

1. 查看慢查询

SELECT TOP 10
    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;

2. 使用执行计划

SET STATISTICS IO ON;
SET STATISTICS TIME ON;

五、Ubuntu 专属注意点

1. SQL Server 版本

Ubuntu 支持:

  • SQL Server 2019 / 2022

查看:

sqlcmd -S localhost -U SA -Q "SELECT @@VERSION"

2. 磁盘 I/O

SQL Server 对磁盘延迟敏感:

iostat -x 1

建议:

  • SSD / NVMe
  • 数据盘与日志盘分离

六、常用监控命令

# CPU
top

# 磁盘
iostat -x 1

# SQL Server 状态
systemctl status mssql-server

七、推荐优化顺序(实操)

  1. 限制 SQL Server 内存
  2. 优化 Tempdb
  3. 建缺失索引
  4. 改写慢 SQL
  5. 系统内核 & 磁盘优化

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

  • Ubuntu 版本
  • SQL Server 版本
  • 内存 / CPU
  • 主要业务场景(OLTP / 报表 / 接口)

我可以直接给你 一份针对性的优化配置方案。

0 踩