3

我是 Oracle 的新手,我从企业管理器创建了 AWR 报告。这是报告的一个小快照。

登录:每秒 0.01 - 每个事务 0.02
内存中排序 % 100.00 每秒
执行19.0 - 每个事务 27.7
% SQL 执行 >1开始:97.45 - 结束:94.41
缓冲区缓存:开始:240M - 结束:240M
回滚 每秒 0.2 - 每个事务 0.2
缓冲区命中 % 99.98
共享池大小:开始:1,024M - 结束:1,024M

你们能否让我知道“登录”、执行等每个术语代表什么以及如何使用它们来确定数据库性能?

对不起,如果这个问题看起来很愚蠢,但我在网上的任何地方都找不到解释。

4

1 回答 1

4

登录非常简单——新用户/会话登录系统的次数。通常,您不希望每秒进行大量登录,因为这是一个非常缓慢的操作。如果你这样做了,那么你可能应该看看连接池。

排序 - 通常您希望对数据进行排序(日期、字母顺序)。小数据集可以在内存中排序。较大的可能会溢出到磁盘,这比较慢。如果您在记忆中做所有事情,那并不意味着有问题。

执行 - SQL 通常经过 PARSE、BIND、EXECUTE、FETCH。每次执行可能有多次提取(提取前 10 行,后 10 行等)。同样,一些 SQL 没有提取(例如插入)。一个事务由许多 SQL 组成。如果每个事务有 20-30 个 SQL,那么您会得到一些合理的复杂性。并非每个语句本身都是一个孤立的事务。每秒执行次数更为基本。请参阅我的结束评论。

% SQL with execution > 1 - 每个解析可以有多个绑定和执行(这是一件好事,因为解析可能很昂贵)。您的大多数 SQL 都会执行多次,非常好。

缓冲区高速缓存 - 数据块副本的内存量。没有“好”或“坏”之分,因为它取决于服务器上的内存。

回滚 - 每个事务 0.2 是....奇数。它表明 20% 的事务被回滚而不是提交。可能没什么好担心的,它可能只是后退或取消按钮的工作方式。除非在强制回滚时抛出很多错误,否则这不是数据库问题,而只是应用程序的工作方式。

Buffer Hit % - 直接从内存读取的数据块百分比,无需进入磁盘。从内存读取速度比磁盘快,所以高是“好”(特别是对于 OLTP 应用程序 - 数据仓库通常处理的数据多于内存容量)。但不要对比率感到兴奋。如果您可以减少物理 IO(从磁盘读取)很好,但是从内存中的块生成额外的读取只是为了提高比率没有任何好处。

共享池大小 - 同样,它是内存的度量。

==================================================== ====================== 最后,这些都不是衡量数据库性能的好方法。重要的是应用程序用户(或开发人员或管理人员)是否说他们的程序满足或不满足其性能规范。

每秒执行次数是一项重要的衡量标准,但仅针对您所需的工作量。如果用户想要每秒执行 50 次,而只执行 20 次,结果是加班,那么你就有问题了。如果他们只需要每秒做 10 次,并且他们在 Youtube 上花半天时间,那你就做得很好。

同样,如果该测量是针对一个工作日的 8 小时进行的,那么如果它涵盖 24 小时且每个人都在家中 16 个小时,情况可能会大不相同。

于 2011-03-20T22:24:31.857 回答