Linux Oracle安装的数据库计算机的CPU使用率

Linux Oracle安装的数据库计算机的CPU使用率,linux,database-design,unix,spring-mvc,oracle11g,Linux,Database Design,Unix,Spring Mvc,Oracle11g,我正在使用Oracle11g,我有一个用Spring框架编写的应用程序。一旦我在安装了Linux的Sun fire 4170上配置数据库,机器的CPU利用率约为80-100%,但是,当我将同一个数据库转移到安装了Unix操作系统的Sun M3000服务器(据说功能更强大的机器)上时,应用程序性能下降,CPU利用率保持在90-100%。我不知道是应用程序在进行这种利用,还是数据库设计。 增加了数据库不是关系型的;事情由应用程序处理 你当然可以在互文主题上找到一些有趣的观点 Oracle没有真正的服

我正在使用Oracle11g,我有一个用Spring框架编写的应用程序。一旦我在安装了Linux的Sun fire 4170上配置数据库,机器的CPU利用率约为80-100%,但是,当我将同一个数据库转移到安装了Unix操作系统的Sun M3000服务器(据说功能更强大的机器)上时,应用程序性能下降,CPU利用率保持在90-100%。我不知道是应用程序在进行这种利用,还是数据库设计。
增加了数据库不是关系型的;事情由应用程序处理

你当然可以在互文主题上找到一些有趣的观点

Oracle没有真正的服务器 架构(其他人也有)

而不是执行经典服务器 任务,例如多线程, 数据页缓存,并行 处理(将查询拆分为多个 设备)等,它使用 o/s必须完成所有这些。那意味着 每个用户进程(PL/SQL连接) 有一个unix进程;1000用户 表示1000个unix进程,全部 争夺同样的资源

您可能会注意到Oracle已经

  • 自版本7(1992)以来的连接池体系结构(多线程服务器)
  • 用于数据页的缓存(称为缓冲区缓存)
  • 自7.1版(1993年)以来的并行查询(跨多个进程拆分查询)
  • 自OPS(版本6)以来,在多台服务器上或在分布式数据库(版本5)上拆分查询
同样值得注意的是,即使所说的都是正确的,而不是不正确的,但实际上并不能帮助您确定根本原因

特别值得注意的是,因为它使用 文件系统文件(非原始文件) 分区),而“缓存”是 在外部,它严重依赖(并且是 对文件系统非常敏感 已设置的缓存。同样地 甲骨文需要大量的数据 这些进程的内存

Oracle当然可以再次使用可追溯到上千年的原始分区,而且如果您希望在数据库中缓存(使用PerformanceDBA已经忘记的缓冲区缓存)并绕过文件系统缓存,则此功能在当前所有文件系统上都可用。Oracle还在ASM中提供了自己的组合文件系统/卷管理器,如果您愿意,可以使用它

Oracle也有相当好的检测功能(如果您可以访问dtrace,solaris也可以),并且肯定可以告诉您哪些会话、进程等正在使用CPU,应用程序在数据库中花费的时间是多少(如果您愿意,可以减少到单个块读取时间),因此非常容易进行分析。我建议您查看由世界顶级Oracle性能专家之一撰写的关于性能的清晰思考。如果您可以访问Oracle诊断包,那么首先签出所有ADDM报告,然后签出AWR报告将是有利可图的

M3000无疑是一款功能更强大的机器,但它更适合真正的服务器。带有超线程的X4170更适合文件服务器

我对此不太确定。有任何数据支持这一说法吗


M3000有一个具有4核的SPARC64 VII处理器(),而X4170有一个或两个具有4核的Intel 5500“Nehalem EP”处理器()。我知道,即使是单处理器Nehalem EP系统,我也会比M3000期待更多。显然,数据会随着工作量的增加而略有变化,但我知道我应该把钱放在哪里。

试图避免这场激烈的战争

我可能应该将我的回答中的“如何发现”部分与PerformanceDBA关于服务器体系结构的评论的回答更清楚地分开。我同意Stephanie对spring框架的怀疑,但如果没有适当的测量证据,就没有必要指责环境的任何特定属性,那只是特定的偏见。幸运的是,oracle内核中内置的检测工具允许您跟踪并分析缓慢的会话,以准确确定问题所在。因此,我将做以下工作:

1) 为代表性会话启用跟踪(您可以使用dbms_monitor包进行跟踪)。 2) 还收集与gather_plan_statistics提示相关的语句的执行计划。 3) 使用适当的配置文件(tkprof、orasrp、method-r profiler)按时间配置跟踪文件

调查问题陈述对响应时间顺序的影响


如果您无法执行上述操作,则可以使用ADDM和/或AWR(如果按照我最初的建议获得许可),或者使用statspack(如果未获得诊断包许可)。ADDM自然而然地专注于时间消费者,我建议如果你被迫走statspack路线,你也应该这样做

可以添加一些
sar
statistics,进程占用CPU…Oracle是一个RDBMS。将它与Spring这样的框架一起使用将对性能产生巨大影响。Spring使编码速度更快,而不是数据库。我保证你会在每一行找到大量的迭代,一次一次。至少,这是我在研究使用框架的程序员构建的数据库时发现的。“我保证你会在每一行上发现大量迭代,一次一次。”你能简要介绍一下这一点吗。。。我一直在用hibernate在JSF框架中开发应用程序,我一直使用Oracle RDBMS作为我的数据库,到目前为止我还没有遇到过这样的问题。JSF也是一个框架,那么为什么Spring会提出这样的问题呢?谢谢你,尼尔。我认为这是一个很好的评论,不是对提问者的回答,而是对现有答案的反驳。我相信我上面的评论很可能是真正的问题。我从未见过框架应用程序表现良好。1)完全正确。这和这件事无关