在虚拟机中运行数据库有什么缺点? 我如何克服它们?

在虚拟机内运行任何东西都会有一定程度的性能影响,但它对数据库系统的性能有什么影响?

我发现这个学术参考文件有一些有趣的基准,但这只是一个有限的testing,只使用Xen和PostgreSQL。 结论是,使用虚拟机“不会在性能上花费太高”(尽pipe您可能会认为实际的数据是这样说的)。

与在虚拟机中运行数据库相关的技术,pipe理和其他缺点是什么?

请张贴可以客观事实支持的答案,我对炒作或其他任何半宗教性的争论都不感兴趣(极客的激情在许多方面都很好,但这对我们来说无能为力。

话虽如此,

  • 在虚拟机中运行数据库时会出现什么问题? (请张贴参考)
  • 这些问题是重要的吗?
    • 他们只在某些情况下显着吗?
  • 什么是解决方法?

    尽pipe许多DB厂商做这个很慢,但几乎所有的厂商都正式支持在虚拟环境中运行的软件。

    我们在Linux上运行了许多Oracle 11g实例,并获得了非常好的性能。 与所有硬件扩展一样,只需确保虚拟化主机具有足够的资源(RAM,CPU),并且磁盘层可以完成任何所需的IO性能任务。

    正如艾瑞克(ErikA)所说,这种情况正变得越来越普遍。 我在SQL Server阵营,并没有任何生产系统在虚拟机上运行,​​但我不会犹豫(关于这个话题稍微研究一下)。 尽pipe(至less在SQL Server中),在走这条路之前,肯定有一些事情需要考虑。 磁盘IO(如其他人所提到的)和内存分配只是两个例子。 不同hypervisor之间的事情也会有所不同。

    Brent Ozar是虚拟化SQL Server的专家,特别是在VMWare中。 我强烈build议阅读他的材料。

    http://www.brentozar.com/community/virtualization-best-practices/

    可以 ,那么应该 。 一艘护卫舰可以去150英里,但是你应该在公路上吗? 你可以不必要地伤害你自己。

    数据库是来宾操作系统。 通过devise,当他们开始时,他们抓住一个资源的块,并出于性能原因直接pipe理它。 只要您在虚拟化托pipe环境中将数据库服务器的核心操作系统作为访客,那么您将在磁盘和RAM的块分配元素与数据库服务器之间放置具有pipe理程序的仲裁层。 它会放慢速度。 查询效率越低,速度越慢。 这些低效率现在可能在专用硬件上被掩盖了,但是一旦你将仲裁引入到你的依赖资源中,你将发现真正的快速。

    要求虚拟化的许多bean计数器都无法识别的是,作为来宾操作系统的数据库服务器提供了自己的合并层。 没有理由不能在一个物理服务器上移动合并多个逻辑数据库实例,甚至到移动IP地址,设置其他主机名等等,以便这些服务自然地合并。 而且,通过这种模式,您不仅可以节省pipe理员为减less物理主机数量而节省的成本,而且可以保留对物理资源的访问权限,而不会影响任意pipe理程序,有时可以做出有益的决定其他。

    其他客户操作系统(如Java)也是如此。 虚拟化解决scheme通常是繁忙的环境,pipe理程序必须做出关于谁在资源上“获取令牌”的大量决策。 任何时候你可以消除这一层,你会变得更好。

    首先使用自然客户操作系统层合并多个实例。 赔率是你将能够打平你的平台整合和性能目标更容易。

    这里有两件事要实现:

    • 虚拟化数据库的每单位硬件的数据库性能单位略低一点。 这意味着您需要购买更多的硬件才能获得相同的性能。
    • 这并不意味着无法获得相同的水平或理想的绩效水平。 通过改进pipe理和其他好处(如更容易的HA),您所获得的收益通常远远超过微小的硬件成本。

    也就是说,在我的工作环境中,我们的Sql Server安装只是两个服务器之一,我不打算在短时间内进行虚拟化(另一个是主DC)。

    运行SQL Server是一个虚拟机就行了,只要你可以提供足够的资源给虚拟机运行你的应用程序。 如果在物理世界中需要24个内核和256个千兆的RAM,则需要在虚拟世界中提供24个vCPU和256个千兆的RAM。

    我刚刚在上个月写了一篇关于在VMware的vSphere下运行SQL Server的SQL Server杂志。

    我运行两个数据库,一个PostgreSQL和另一个MySQL,在虚拟环境(Xen)中dom0s是高度可用的。 domU文件系统全部位于iSCSI SAN LUN上,并分成LVM2逻辑卷。 MySQL数据库仅用于Cacti,因此根本没有看到太多的用法,也位于iSCSI LUN上。

    PostgreSQL数据库是我们暂存环境的数据库,因此比MySQL数据库有更高的利用率。 出于这个原因,数据库位于本地RAID10集上,并且DRBD被复制到第二个集群节点。 但是,就实际负载而言,这个临时数据库根本看不到很高的负载。 在我看来,这使得它成为虚拟化的一个很好/很好的候选者。

    我们组织的一些好处是降低了功耗,节省了机架空间,并减less了硬件pipe理开销。

    我们的主要生产数据库,另一方面,我无法想象去虚拟….

    我在许多服务器上使用MSSQL和MySQL服务器。 几年前,我对在虚拟机上开始设置SQL服务器犹豫不决,因为我听说过在虚拟机上运行SQL服务器的性能问题。 但是,在安装了我的第一对SQL服务器之后,我感到很惊讶,并发现性能没有任何变化。 越来越多的服务器在虚拟机上,几乎所有我工作的大型企业客户端都使用了SQL服务器。

    是的,虚拟机不会增加一些开销成本,如果你打算在一个盒子上托pipe多个虚拟机,你将需要一个很好的服务器。 需要注意的常见资源问题是添加额外的虚拟机并稀释可用资源。 计划一些增长是常见的做法,但是如果您购买了服务器来托pipe2个或3个虚拟机,而现在运行10个虚拟机,则可能会看到性能下降。

    如果我说我没有看到在虚拟机上运行SQL服务器的性能问题,我会说谎。 但是,我了解到,如果你看到performance不佳,环境可能有问题。