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