时事通讯




SQL Server在RHEL用户上有一个更大的故事


在我的上一篇专栏文章(“关于Linux上的SQL Server的故事是什么?”DBTA我给了你一个关于SQL Server运行在Linux操作系统(OS)上的一些非常酷的事情的概述,主要是Red Hat Enterprise Linux (RHEL)。

在那篇文章中,我谈到了Linux上SQL Server的整体采用(曾经是愚人节玩笑博客文章的领域),高可用性(HA)支持和特性,并简要概述了SQL Server在RHEL上的性能改进,包括强制单元访问(FUA)存储设备和持久性内存(PMEM)的改进。现在,让我们更详细地回顾一下这些特性和其他性能改进特性。

RHEL不是你父亲的奥兹莫比尔

对于那些出生在90后的读者,请原谅我没有得到上面的参考资料。但是我从Sanjay Rao (Red Hat的高级首席性能工程师)那里得到的一个令人惊讶的教训是,Linux和Windows操作系统在提高性能方面有一些显著的根本区别。Linux的粉丝可能会翻白眼,因为他们知道这一点已经很多年了,但这对我来说是一个新闻,因为我从Windows操作系统问世以来就主要从事这方面的工作。例如,Linux处理非统一内存访问(NUMA)节点的方式与Windows操作系统略有不同,这为具有数百个CPU内核的服务器提供了一点性能提升。由于吸取了这样的教训,我对Linux上的SQL Server的信心与日俱增。如果您的IT部门在Linux方面有良好的记录,我会说,“满怀信心地部署!”

概念相同,术语不同

微软和红帽已经在SQL Server上合作了4年多,并提出了各种方法来更好地管理服务器内部以获得更高的性能。例如,Windows操作系统有“大页面”(Large Pages)和一个名为“内存锁页”(Lock Pages in Memory)的选项。在Linux中,通过跟踪标志834使用Transparent Huge Pages可以获得相同的功能,通过调优脏页比率来防止磁盘交换,还可以获得更多的内存管理选项。详情请参阅https://red.ht/2IxlUdK

更可调

我的职业生涯开始于大型机、VAX/VMS小型机和HPE UNIX小型机。这些系统都是高度可调。事实上,当我在上世纪90年代初转向Windows操作系统时,我很高兴能在Windows操作系统中更少的元素进行调整。我们在Linux (UNIX的自然后代)中仍然可以看到这种细粒度的可调性。关于服务器内存方面的这种可调性的示例,请查看https://red.ht/3ncUKrS上的讨论。注意RHEL调优指南中的描述与版本7有关,但也适用于版本8。

在我的上一篇文章中,我介绍了基于硬件的PMEM作为廉价但速度较慢的非易挥发内存快车(Non-Volatile Memory Express, NVMe)的替代品的想法。PMEM还使SQL Server 2019在Linux上节省大量的时间和精力在IOPs(每秒输入/输出操作)上存储在dax格式的PMEM卷上的数据和日志文件。然而,这个描述可能太抽象了。它真正的含义是在分析工作负载上获得3.6倍的性能提升,如HPE基准可下载PDF (https://bit.ly/3kjJ5pf)。在阅读这篇文章时,请跳到第13页,以获得前后基准测试的可视化效果。请记住,这在SQL Server标准版中是一个特别强大的价值主张,特别是在使用列存储索引时。PMEM的一个例子是Intel Optane DC Persistent Memory dimm(双直插式内存模块)。

Win!

Linux系统长期以来一直使用配置文件来定义各种os级配置系统,其中大多数都对性能有很大的影响。Linux有一个广泛可用的高性能配置文件,称为“调优”。然而,微软和Red Hat已经合作为运行SQL Server的Linux服务器创建了一个更好的配置文件,称为“mssql-tuned”。mssql调优的配置文件是常规“调优”配置文件的一个超集,定义了诸如虚拟机、动态内存、交换文件支持、虚拟地址空间、NUMA设置等功能的设置。详细资料载于https://bit.ly/3eOUrAx

了解更多

利用红帽自己的SQL Server兴趣社区Github网站https://github.com/redhat-cop/sqlserver-coi对于脚本,完全装备的容器和多个有价值的阅读资源。另外,你可以在www上阅读我们关于在Linux容器上构建一个完整的SQL Server的博客。sentryone.com/blog/restoring-an-adventureworks-database-on-a-sql-server-on-linux-container。