我正在使用oracle 11g,我有一个在Spring框架中编码的应用程序.一旦我在安装了Linux的Sun fire 4170上配置数据库,机器的CPU利用率大约为80-100%,然而,当我将相同的数据库转移到安装了Unix OS的Sun M3000服务器(据称功能更强大的机器)时,应用程序性能变得更好down和CPU利用率保持在90-100%.我无法弄清楚它是否正在进行这样的利用或其数据库设计的应用程序.
补充说,数据库不是关系型的;事情由应用程序处理.
解决方法:
那么你当然可以在intertubes上找到一些有趣的意见.
Oracle does not have a true server
architecture (others have it).Rather than performing classic server
tasks, such as multi-threading,
caching of data pages, parallel
processing (split a query across many
devices) etc. within itself, it uses
the o/s to do all that. That means for
each user process (PL/SQL connection)
there is one unix process; 1000 users
means 1000 unix processes, all
competing for the same resources.
您可能会注意到Oracle已经拥有
>自版本7(1992)以来的连接池架构(多线程服务器).
>永远存在数据页面的缓存(有助于缓冲区缓存)
>自版本7.1(1993)以来的并行查询(在多个进程之间拆分查询)
>自OPS(版本6)或跨分布式数据库(版本5)在多个服务器之间拆分查询
同样值得注意的是,即使所说的都是正确的而不是错误的,它实际上并不能帮助您确定根本原因.
Especially noteworthy, because it uses
file system files (not raw
partitions), and the “caching” is
outside, it relies heavily on (and is
very sensitive to) the file system
cache that you have set up. likewise,
Oracle needs a massive amount of
memory for these processes.
Oracle当然可以再次使用原始分区,可以追溯到上一个千禧年,而且如果你想在数据库中缓存 – 使用PerformanceDBA已经忘记的缓冲区缓存 – 并绕过文件系统缓存,这个功能在所有当前文件系统上都可用. Oracle还在ASM中提供了自己的组合文件系统/卷管理器,如果您愿意,可以使用它.
Oracle也有很好的仪表化(如果你有权访问dtrace,那么是solaris)并且当然可以告诉你哪些会话,进程等正在使用CPU,应用程序在数据库中花费的时间被消耗掉(直到单个块)阅读时间,如果你关心)因此非常容易分析.我建议您查看关于性能的清晰思考http://www.method-r.com/downloads/cat_view/38-papers-and-articles,并由世界*Oracle性能专家撰写.如果您可以访问Oracle诊断程序包,则首先检出所有ADDM报告,然后检查AWR报告是否有利可图.