下载
第22章 鉴别资源密集型用户
本章要点:
不同的资源
C P U
文件输入/输出
内存
每一个数据库管理员都面对过这样一种情形,即数据库开始拖延并由于某种原因速度突
然变慢。这种现象能够发生在一个已被很好调整过的数据库中,它会在不知不觉中影响你。
这时数据库管理员需要用技巧来辨认资源密集型用户并做一些必要的影响数据库性能的事情。
我曾多次查明用光全部系统资源并引起数据库整体性能下降的会话。资源密集型用户可能是
一个执行大型查询的用户,其中该查询拥有很多表并在 S E L E C T子句中遗漏了几个键列连结,
或者它可以是一个未优化的语句。本章的目的就是要使数据库管理员具备必要的技巧以便相
对容易地鉴别这样的用户。本章提供鉴别资源密集型用户的方法和技术,但没有详细地讨论
纠正问题的细节。关于如何解决它们的细节将在本书中其他有关性能调整的章节中讨论。
22.1 不同的资源
你可以采用许多方法鉴别资源密集型用户。下面这个方法首先对环境进行了概述。假如
觉察到出错的地方,那么应进一步地在该区域中调查以便对用户进行详细描述。你要查看的
资源是C P U 、文件输入/输出和内存。假如 C P U 被严重加载并且完全被某个执行大量的 C P U 密
集型工作的用户占用的话,那么该用户会降低系统速度。类似,频繁地文件输入 /输出也能够
引起系统性能下降。某些进程对内存的频繁请求会导致内存分页与交换,这将严重阻碍系统
性能。你应把注意力集中在这三种资源上。基本上,在服务器上执行的每一个进程试图获取
如下资源:
■ C P U
—
每一个进程都需要一些 C P U 时间片以执行它的工作。有些进程夺取了大量
C P U 时间,有些进程完成时间较早。可以使用的有限 C P U 能力必须在系统上的O r a c l e进
程与内部操作系统( O S)进程之间共享。显而易见, C P U 密集型用户是指消耗大量
C P U时间的用户。
■ 文件输入/输出
—
每当一个进程需要存取数据时,如果该数据已经由以前的某个进程
带入的话,那么该进程就首先查找缓存。如果数据已经存在于该缓存中,则读取很快
便完成。如果需要的数据不在缓存中,那么就必须从磁盘上读取该数据。这时必须执
行一个物理读取。这种从磁盘中读取数据的操作非常耗时,因为从磁盘中读数据所用
的时间几乎是从高速缓存中读数据所用时间的 5 0 倍。当系统开始密集地进行输入 /输出
时,系统性能开始下降,因为所有进程在大部分时间里所做的工作就是等待将要从磁
盘中返回的数据。
我正在讨论的资源是时间。由于较繁忙的磁盘文件存取而导致大量的时间被消耗,所以