问君能有几多愁,恰似不懂Linux SQL如何调优——聊聊SQL Server on Linux最佳实践
问君能有几多愁,恰似不懂Linux SQL如何调优——聊聊SQL Server on Linux最佳实践
自从微软开始拥抱Linux, SQL Server 很快就推出了 Linux版本, linux的SQL 与windows 在运行环境截然不同,SQL自己的配置和优化几乎想通,但是涉及到操作系统层的优化,还是有所区别。 官方给了一些最佳实践。
SQL Server 配置
1、Use PROCESS AFFINITY for Node and/or CPUs,建议将服务器的所有CPU和NUMA节点进行关联,处理器关联可帮助维护高效的 Linux 和 SQL 计划行为。
/*下面显示如何设置与 CPU 和 NUMA 节点的进程关联。 该示例假定服务器包含 256 个 CPU,这些 CPU 分为四组,每组各有 16 个 NUMA 节点。 线程未分配给任何 NUMA 节点或 CPU。
组 0:NUMA 节点 0 到 3,CPU 0 到 63
组 1:NUMA 节点 4 到 7,CPU 64 到 127
组 2:NUMA 节点 8 到 12,CPU 128 到 191
组 3:NUMA 节点 13 到 16,CPU 192 到 255 */
--设置与 0 和 2 组中所有 CPU 的关联。
ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY CPU=0 TO 63, 128 TO 191;
--设置与 NUMA 节点 0 和 7 中所有 CPU 的关联
ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY NUMANODE=0, 7;
--设置与 AUTO 的关联
ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY CPU=AUTO;
一般建议将所有的CPU进行关联。
2、配置多个 tempdb 数据文件
/*Linux 系统下,在安装SQL Server的过程,没有进行tempdb的配置,因此为了平衡tempdb的负载,应该要对tempdb进行分配,建议添加数据文件,数量为CPU核心数目相同,将文件放在最快的磁盘,如果有多个磁盘,可以平均放在不同的磁盘上。添加文件代码如下类似*/
USE [master]
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev01', FILENAME = N'/var/opt/mssql/data/tempdev01.ndf' , SIZE = 8192KB , FILEGROWTH = 65536KB )
GO
3、 mssql-conf 设置内存限制
SQL Server 为了确保Linux操作系统有足够的可用内存,因此在默认情况下只使用物理内存的80%,但是对于大内存的服务器20%内存对Linux太大,例如,在使用 1 TB 系统的 RAM 中,默认设置将使大约 200 GB 的 RAM 未使用。所以我们需要进行设置,可以通过mssql-conf进行设置。
--下面代码是将内存改为64000M sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 64000 --完成后重启服务 sudo systemctl restart mssql-server
注意此处配置的内存,并不是指SQL Server种的最大内存,sp_configure 中可以设置 max server memory (MB),这里指的是相当于windows版本下的操作系统内存的概念。如图
而 max server memory (MB) 指的是
操作系统配置
Linux 上SQL Server要获得最好的性能,有以下建议
##CPU配置
下表提供了建议的 CPU 设置:
设置 | 值 | 参考信息 |
---|---|---|
CPU frequency governor | performance | See the cpupower command |
ENERGY_PERF_BIAS | performance | See the x86_energy_perf_policy command |
min_perf_pct | 100 | See your documentation on intel p-state |
C-States | C1 only | See your Linux or system documentation on how to ensure C-States is set to C1 only |
磁盘配置
设置 | 值 | 参考信息 |
---|---|---|
disk readahead | 4096 | See the blockdev command |
sysctl settings | kernel.sched_min_granularity_ns = 10000000 kernel.sched_wakeup_granularity_ns = 15000000 vm.dirty_ratio = 40 vm.dirty_background_ratio = 10 vm.swappiness=10 | See the sysctl command |
多节点的NUMA系统中设置自动NUMA
如果在多节点上安装 SQL Server NUMA系统、 以下kernel.numa_balancing默认启用内核设置。 若要允许 SQL Server 上运行最大效率NUMA系统,禁用自动 numa 平衡的多节点 NUMA 系统上:
sysctl -w kernel.numa_balancing=0
内核虚拟地址空间设置
默认设置vm.max_map_count (默认 65536) 对于 SQL Server这值太小。 将此值 (这是一个上限) 更改为 256k。
sysctl -w vm.max_map_count=262144
SQL Server 数据和日志文件禁用 last accessed date/time
存储 SQL Server 数据和日志文件使用noatime属性
Leave Transparent Huge Pages (THP) enabled
默认情况下,大多数 Linux 安装应该对具有此选项。 我们建议用于最一致的性能体验,要启用此配置选项。
swapfile
确保已正确配置的交换文件,以避免任何内存不足问题。
Virtual Machines and Dynamic Memory
如果正在虚拟机在 Linux 上运行 SQL Server,请确保您选择选项来修复虚拟机保留的内存量。 不要使用 HYPER-V 动态内存等功能。
总结
以上是官方的最佳实践和安装配置选项。 性能问题的调优和一些实践。改天再来写一些。
问君能有几多愁,恰似不懂Linux SQL如何调优——聊聊SQL Server on Linux最佳实践相关推荐
- linux磁盘io调优,Linux系统管理和调优(内存、CPU、磁盘IO、网络)
系统管理 Author:Rich七哥 查看 CPU 负载相关工具,找出系统中使用 CPU 最多的进程 查看 Memory 运行状态相关工具,找出系统中使用内存最多的进程 查看 IO 运行状态相关工具, ...
- linux系统基础调优32条技巧
linux系统基础调优32条技巧 版权声明:原创作品,如需转载,请与作者联系.否则将追究法律责任. 缘起:本文为老男孩linux系统基础优化部分,一些高级方面的调优欢迎大家一起讨论或单独交流,谢谢大家 ...
- 通过案例学调优之--SQL Profile
通过案例学调优之--SQL Profile 一.什么是SQL Profile(概要) SQL Profile在性能优化中占有一个重要的位置. MOS里这么描述SQL Profile: SQL Prof ...
- linux内核关闭tcp校验,linux内核tcp调优规范与方案
1.TCP常用内核参数优化 上一篇我们介绍了服务器上有大量的TIME_WAIT等待,可能造成的危害,以及给web服务器带来负担.如何解决这个问题呢,其实,解决思路很简单,就是让服务器能够快速回收和重用 ...
- DB2 SQL性能调优秘笈pdf
下载地址:网盘下载 简介 编辑 <DB2 SQL性能调优秘笈>是一本不可多得的DB2数据库性能调优秘笈,由拥有20余年DB2工作经验的资深数据库专家撰写,Amazon全五星评价畅销书.&l ...
- 11g新特性-自动sql调优(Automatic SQL Tuning)
11g新特性-自动sql调优(Automatic SQL Tuning) 在Oracle 10g中,引进了自动sql调优特性.此外,ADDM也会监控捕获高负载的sql语句. 在Oracle 11g中, ...
- 十八般武艺玩转GaussDB(DWS)性能调优:SQL改写
摘要:本文将系统介绍在GaussDB(DWS)系统中影响性能的坏味道SQL及SQL模式,帮助大家能够从原理层面尽快识别这些坏味道SQL,在调优过程中及时发现问题,进行整改. 数据库的应用中,充斥着坏味 ...
- Azure SQL性能调优实践
Azure SQL性能调优实践 注:blog具备时效性,所有内容都是在当前时间为准,截止时间2017-6-5 首先,创建了一个测试数据库 MaxAadventureWorkTest 使用了 示例数据库 ...
- linux内核参数调优,缓冲区调整,tcp/udp连接管理,保持,释放优化,gossary,terms
linux内核参数调优,缓冲区调整,tcp/udp连接管理,保持,释放优化,gossary,terms changing a readonly file (linu single user mode) ...
最新文章
- python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数默认返回浮点数
- 备战 ‘金三银四’ 必备超多软件测试面试题全在这里
- 跨网页的新手引导_IOS中新手引导页面的实现(新手引导,Guide)
- 【Python】pandas 缺失数据处理大全(附代码)
- 微软发布 Microsoft Edge 85 稳定版
- Python yaml模块
- 使用python实现深度神经网络--学习笔记
- python UI自动化图片断言
- ubuntu安装nat123
- 必须安装三星系列android系统智能手机usb驱动程序,三星usb手机驱动
- offline RL介绍
- 场外期权:一个你从未了解过的金融衍生品市场正在中国悄悄壮大
- MongoDB find查询语句详解
- python文件怎么另存为,python文件怎么保存
- Android 版本更新,支持增量更新
- BlockingQueue队列有哪些
- CMS几种GC模式解读
- 网络安全2.0主动防御体系有哪些新思路?
- android iOS App客户端如何实现在线支付
- 拼多多上市了!社交电商的力量不容小觑!