linux - 安装了 Oracle 的数据库机器的 CPU 使用率

标签 linux database-design unix spring-mvc oracle11g

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

最佳答案

嗯,您当然可以在插管上找到一些有趣的意见。

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 也是如此)并且肯定可以告诉您哪些 session 、进程等正在使用 CPU,应用程序在数据库中花费的时间被(向下)如果你关心的话,可以单独 block 读取时间),因此很容易受到分析。我建议您在 http://www.method-r.com/downloads/cat_view/38-papers-and-articles 查看清楚地思考性能由世界顶级 Oracle 性能专家之一编写。如果您有权访问 Oracle 诊断包,那么首先检查所有 ADDM 报告,其次检查 AWR 报告将是有利可图的。

关于linux - 安装了 Oracle 的数据库机器的 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5307590/

相关文章:

python - 将颜色设置为 wx.listbox 项目

php - linux 文件大小

python - 如何设置 bluepy 无需 sudo 即可扫描的环境?

mysql - 每周员工可用性数据库设计

php - 我应该将文件信息存储在基于 php 的文件管理器的数据库中吗?

linux - shell 脚本 telnet 在第一点跳过 while 循环

c - 如何将变量传递给c中的命令

php - 如何标准化我的 MySQL 数据库

c - 如何在 C 库中使用 opendir 和 readdir 忽略隐藏文件

c++ - 为什么要使用 umask?