虚拟化 Microsoft SQL 数据库服务器

虚拟化 Microsoft SQL 数据库服务器

我的公司正在寻求虚拟化我们的 Microsoft SQL 服务器。我在另一个问题上看到,虚拟机上的数据库遭受 IO 瓶颈,这对我们来说不是很好。但我想知道,既然我们正在使用 Microsoft HyperV、Microsoft Server 和 Microsoft SQL,微软是否已经优化了这些服务器,使其能够像物理机一样工作?

谢谢

答案1

微软是否已经对这些进行了优化,以便能够像物理机器一样运行?

是的,MS 已经接近了。

主要问题是它只在小型安装中有意义。当您的虚拟 SQL Server 需要自己的机器并精心布置磁盘设置时(除了容量较小的小型 SQL 实例外),实际上没有其他东西可以放在该服务器上。

我在虚拟化平台上运行 SQL 服务器。该机器的 20 个磁盘中有 12 个专用于 SQL 服务器(用于日志和数据,包括 tempdb - 操作系统从 VHD 加载)。下一次升级将使其达到极限 - 即使现在,它也是容量最大的 VM,具有 16GB RAM,而我的可用内存为 64GB。一旦我需要升级它......这有什么意义?

使用当前技术,您只能使用 4 个虚拟核心 - Hyper-V 3(明年推出)中将有 16 个。这对于数据库分析来说并不多。如果您进行 OLAP 类型的处理,使用 Hyper-V 进行可视化可能根本无法扩展。

因此,主要问题不是 MS 无法接近同类硬件,而是 SQL Server 变得如此之大,以至于同类硬件意味着一个硬件级别上的 1 个 SQL Server,而且遗憾的是,你无法将 VM 扩展为与硬件一样好。

答案2

如今的虚拟机管理程序可以提供与底层物理硬件几乎相同的性能,只要性能在物理上存在,并且你不会在同一硬件上放置太多虚拟机;因此,虚拟化本身如果您有足够的 CPU/RAM 并且确保此虚拟机的数据磁盘不与其他虚拟机共享,则不会对性能产生很大影响。

对于小型/中型工作负载,这几乎总是足够的;但对于大型工作负载,您需要真的希望在物理硬件上运行 SQL Server,主要有两个原因:

  1. 虚拟化硬件只能扩展到一定级别,Hyper-V 不能拥有超过 4 个虚拟 CPU,ESXi 不能拥有超过 8 个虚拟 CPU。
  2. 如果您要将虚拟化主机的所有物理资源分配给单个虚拟机,那么您也可以让它直接在物理硬件上运行并消除(很少的)虚拟化开销。

答案3

简短的回答:无论采用哪种堆栈,没有任何虚拟机能够匹敌物理服务器的 IO 性能。

详细回答:这确实取决于负载。如果您的公司有 80 名用户,并且您的 SQL 服务器正在为会计应用程序、SharePoint 实例和其他一些随机业务线应用程序提供服务,我怀疑您的性能是否会受到太大影响。

如果该 SQL 服务器为数千名用户提供服务,或者运行某些密集型应用程序,每秒进行数千次查询和计算,那么您将看到巨大的性能损失。

答案4

我所体验过的所有虚拟化技术都会对性能造成相当大的影响,尤其是在 IO 方面。我永远不会在虚拟机上运行繁重的数据库。

相关内容