虚拟机上的单核 SQL Server

Deb*_*Deb 7 sql-server vmware sql-server-2016

最近我们学区已经将多台服务器从2005版升级到2016版,从物理服务器升级到VM服务器。

我们的基础架构团队展示了用于 SQL Server 安装的单核 VM 服务器。

我试图向该部门的负责人解释 SQL Server“讨厌”在单核上,而他希望看到“证据”。我提供的数据都不能满足他的证明需要,因此他要求提供一些关于为什么 VM SQL Server 不能在单核上有效运行的文章。

你用什么文章来做这件事?

任何对我的案件的帮助将不胜感激!

Han*_*non 11

任何消耗 CPU 的非 SQL Server 进程都可能导致整个 SQL Server 完全无法使用。

例如,Windows Update 将在解压缩 .Net 程序集时使 SQL Server 停止。

任何防病毒进程,即使配置为排除 SQL Server 数据文件和文件夹,也可能导致 SQL Server 在扫描文件和解压缩更新的病毒定义文件时无响应。

如果您安装了任何管理软件,例如 IBM Tivoli Server Monitor,并且它决定 100% 使用一个内核,那么除了冷关闭机器之外,您可能无法做任何事情。不要问我为什么要提这个。

我可以继续说下去,但我只想说,任何具有单核的服务器只会在性能和可管理性方面带来麻烦。检查一下,今天应该认为任何具有单核的计算机都无法使用。哎呀,我的手机有8核。

当你在做的时候,说服虚拟化人员给每个 SQL Server 一个合理的内存预留,以确保 SQL Server 的内存不会从主机主内存中分页到磁盘。

对于严重的 VMware 托管的 SQL Server,您应该根据在 VMware 最佳实践指南上构建 SQL Server来配置 VMware 。

归根结底,单核虚拟机在任何给定时间只能运行一个线程。对于每线程一个核心的情况,虚拟化不是灵丹妙药。

上述几点考虑到 Windows NT(所有现代版本的 Windows 都建立在 1993 年的代码库上)利用抢占式多任务处理。抢占式多任务允许操作系统通过定期进行上下文切换来强制执行多任务。即使使用抢占式多任务处理,如果单个任务决定使用尽可能多的 CPU,具有单核的服务器仍然会遭受非常差的性能,因为 O/S 会为该任务提供尽可能多的 CPU 时间同时仍然允许更高优先级的任务运行,强制 CPU 为 100%。如果在 CPU 达到 100% 时 SQL Server 正在运行,SQL Server 的 CPU 量将减少到非常明显。在上述情况我概括,我也没有也就是说,机器(甚至 SQL Server)将完全“停止”或“死亡”;那是不真实的。然而,机器可能变得如此繁忙,以至于机器变得无法使用。添加第二个核心虽然肯定不是灵丹妙药,但可以降低机器完全无响应的可能性。每增加一个核心意味着另一个线程可以运行到 100% CPU,而不会导致机器无法使用。


Neg*_*sro 6

我以前必须证明同样的事情。我们的容量规划团队最终了解到,我们的数据库在备份期间几乎无法使用。

作为 DBA,您最大的恐惧应该是数据丢失。如果您不能自信地运行备份而不采取或导致中断,这是一个大问题。运行一些测试以确保在进行备份时性能会受到影响,然后说明如果有多个核心,问题应该会消失。