我们有一个大约 100 GB 的 Oracle 数据库,该数据库运行在 ESX 中的 Windows Server 2k3R2 VM 之上,采用 1 个插槽,1 个核心配置。每当它必须处理一个主要查询时,它似乎会在该查询期间“固定”(50% - 75% CPU 使用率),并且在某些情况下会限制使用它的应用程序的功能。最典型的情况是,当我们运行海量报表时,在运行查询时,单独查询会显着降低应用程序性能,就好像它在排队任务一样。我的问题是:将虚拟机“升级”到 1 个插槽、2 个核心配置是否会显着改善这个“挂钩”问题?
那要看。如果 CPU 利用率来自用户,那么答案很可能是“是”。如果 CPU 利用率来自 iowait,那么在升级存储系统之前,您就是在浪费金钱。如果它主要来自系统,那么你可能有一个驱动程序或硬件设备占用了太多中断资源(网卡,也许?)
我很确定 CPU(计数)的任何升级都会带来性能优势,只要您将它们也添加到虚拟机即可。确保你不要过度承诺。也就是说,假设您在 32 GB 服务器上有 4 个虚拟机,并且您为每个虚拟机分配了 25 GB 的 RAM。
但是,在我看来,您正在限制自己使用在虚拟环境中运行的 oracle。
我会认真考虑在没有虚拟化层的专用服务器上运行 oracle。甲骨文是一头野兽,需要它能得到的所有资源。也使用至少8个磁盘的硬件raid10,磁盘越多越好。这也适用于 ESXi 服务器。
这在很大程度上取决于 Oracle 工作的可并行化程度,即取决于正在运行的特定查询。一般来说,DBMS 是一个高度并行的应用程序,因此它应该受益于拥有更多的 CPU;但某些工作负载可能根本无法从中受益。
拥有多个数据库引擎核心将有助于提高性能。Oracle 有几个核心进程,如果它们太少,它们都必须在 CPU 时间上竞争。此外,当您引入消耗容量的用户会话(例如查询)时,竞争会变得更糟。所以,是的,它会有所帮助。Oracle 旨在拥有和使用多 CPU 平台。此外,如果您在同一台服务器上运行应用程序服务,则毫无疑问。