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