首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库服务器和数据存储虚拟化技术的利弊

数据库服务器和数据存储虚拟化技术的利弊
EN

Database Administration用户
提问于 2012-08-24 09:54:31
回答 2查看 2.6K关注 0票数 5

昨天,我们聊了一下性能和可恢复性,我意识到虚拟化环境能给我带来多少美好的东西--但由于我对性能有点怀疑,所以我在这里问。可能是一些地理信息系统,但在地理信息系统的用户,他们说这是特定于数据库.;)

数据库服务器会因虚拟化而遭受严重的性能损失吗?我不理解技术的最后细节,但不知何故,这是一个“黑匣子”,需要通过硬件处理。还有PostGIS给我们的所有技巧,磁盘访问会被授予吗?(聚类、索引等)--分段聚类就像没有聚类一样!

最大的优势是维护和可伸缩性。在发生严重硬件故障时,我可以在几分钟内迁移到另一台物理机器,甚至是实时迁移。

谁有经验,能为我提供关于这个主题的好网站或文学作品?我记得上一次fossgis中的一些东西,以及ESXi和本机服务器上的一些内部基准测试,不知怎么的,我无法确定它是否好。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2012-08-24 12:36:50

这是“视情况而定”的问题之一。

性能取决于资源、争用、配置和VM引擎

非竞争VM主机:如果适当地为具有非竞争高性能本地附加或SAN存储的VM提供资源,对CPU资源的争用较低,没有内存过度提交或争用,快速专用网络访问等,则通常在经过适当调整的VM引擎上,它的性能会非常好。准确的结果将取决于所使用的VM系统,取决于您如何提供对资源的访问,以及更多。

在保证低争用率和良好存储的高端VPS计划上,您可以获得很好的结果。

竞争/资源不足的VM主机:如果您将其放在与其他三个应用服务器和文件服务器相同的框中,所有这些服务器都共享相同的RAID 5数组,并且正在争夺RAM和CPU,那么它将执行得非常糟糕。

如果你把它放在一个便宜的,超额订阅和超过VPS主机某处,你会得到同样糟糕的结果。如果您的内存中有一半是在主机的磁盘上交换的,那么任何事情都不会很快。

“在云中”:如果您将其放在EC2、Azure或其他什么上,那么性能将取决于服务的争用比率、他们正在使用的存储空间、其他用户正在做什么、他们的QoS有多好,等等。

至少对于EC2来说,磁盘子系统的性能非常糟糕(至少在2012年是这样),所以只有当您有足够的内存来缓存索引时,它才会执行OK。Amazon引入了新的高I/O实例,这些实例可能更好,但我还没有看到基准。

通常,如果您选择使用体面的磁盘进行轻松竞争的主机,比如高质量的高端虚拟专用服务器主机,您就会得到一些介于两者之间的东西。

Direct保证

这取决于您的VM设置,这取决于文件排序之类的内容。您是否使用由文件支持的VM?用原始的积木装置?被一个iSCSI SAN?这还取决于您的VM引擎是如何配置的,以及您使用的是哪个VM系统。

最佳案例

在最好的情况下--一个具有所有辅助病毒驱动程序、VT、VT、对主机资源的非竞争访问等的系统--您可能会在与主机非常接近的情况下获得性能。如果您给VM直接块设备,而不是主机文件进行存储,那么您将得到正确的文件排序,而不需要主机端的碎片。到底有多接近取决于您的特定硬件、主机和来宾、配置等等;将其与工作负载进行基准测试。

fsync()和写持久性

使用VM时要注意的一件事是,您必须确保磁盘系统告诉有关fsync()的真相。让VM变得更快的一个非常简单的方法是忽略fsync()请求。这很好,直到VM主机崩溃或失去电源,此时您的数据库可能会被无可救药地损坏。VM主机必须通过尊重来宾操作系统的磁盘刷新命令来满足fsync()请求,或者必须提供非易失性的写缓存,这种缓存在失去电源时不会消失。有些SAN使用SSD,其他大多数系统使用电池支持的RAID控制器缓存存储器。如果您的VM每秒处理超过几百个事务,那么它可能忽略fsync或在写缓存存储中,并且您应该在它吃掉您的数据之前找到它。

,但为什么?

(更新):正如Chris所指出的,您为什么要虚拟化DB服务器?为什么不在DB服务器级别处理复制、心跳和故障转移,通过副本的升级进行迁移,并获得裸金属的全部性能?

我写了这个最初的回应,思路是VM是给定的,问题是如何获得最好的结果。在我看来,DB服务器最好的虚拟化仍然是没有虚拟化。尽管如此,我只管理了相当小的网站。

票数 14
EN

Database Administration用户

发布于 2012-09-02 02:42:12

一般来说,我对VM上的数据库服务器有疑问。我不怀疑,按照前面的答案,这是可能的,但我认为这是一个复杂的损失,特别是对于PostgreSQL,您可以在同一个系统上运行几个集群,而不需要虚拟化,只要您有不同的IP地址或端口。

人们谈论的好处是,您可以合并服务器。这在其他RDBMS系统中是最有用的,因为在同一服务器上运行多个实例是不合理的。在某些情况下,它可以提供一些灵活性和性能。尤其是对于低端应用程序来说,这些可能是引人注目的好处。

但是,必须根据VM在很大程度上是一个黑匣子这一事实进行加权,特别是在云中运行时,您缺乏对硬件的控制。这意味着磁盘I/O (这类服务器对其特别敏感)往往超出了您的控制范围。可以通过网络存储来减轻这种情况。

因此,我的看法是:如果它解决了特定的问题,那么如果您已经在一个环境中,可以控制每个集群的磁盘I/O,那么它可以是一个有用的解决方案。然而,更多的情况是,它是一种寻找问题的解决方案,而不是复杂的胜利。如果你在问这个问题,这对你来说不是正确的解决办法。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/23069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档