AWR:数据库性能有多“专家”?

通过这篇简短的文章,我想消除一个与分析 Oracle Exadata 上运行的 AWR 数据库相关的误解。 近10年来,我一直面临这样一个问题:Exadata软件对生产力的贡献是什么? 或者用新造的词:特定数据库的工作有多“专家”?

AWR:数据库性能有多“专家”?

在我看来,这个正确的问题常常根据 AWR 统计数据得到错误的回答。 它提出了系统等待方法,该方法将响应时间视为处理器(DB CPU)的操作时间和各个类的等待时间的总和。

随着 Exadata 的出现,与 Exadata 软件运行相关的特定系统期望出现在 AWR 统计数据中。 通常,此类等待的名称以“单元”一词开头(Exadata 存储服务器称为单元),其中最常见的是具有不言自明名称的等待“单元智能表扫描”、“单元多块”物理读”和“单元单块物理读”。

在大多数情况下,此类 Exadata 等待在总响应时间中所占的份额很小,因此它们甚至不属于按总等待时间排列的 Top10 前台事件部分(在这种情况下,您需要在前台等待中查找它们)活动部分)。 我们好不容易从客户那里找到了一个每日AWR的例子,其中Exadata的预期被列入Top10部分,总计约为5%:

活动

等待

总等待时间(秒)

平均等待时间

%数据库时间

等待班

数据库CPU

115.2

70.4

来自 dblink 的 SQL*Net 更多数据

670,196

5471.5

8.16ms

3.3

商业网络

Cell单块物理读

5,661,452

3827.6

676.07us

2.3

用户输入/输出

同步 ASM 重新平衡

4,350,012

3481.3

800.30us

2.1

其他名称

单元多块物理读取

759,885

2252

2.96ms

1.4

用户输入/输出

直接路径读取

374,368

1811.3

4.84ms

1.1

用户输入/输出

来自 dblink 的 SQL*Net 消息

7,983

1725

216.08ms

1.1

商业网络

单元格智能表扫描

1,007,520

1260.7

1.25ms

0.8

用户输入/输出

直接路径读取温度

520,211

808.4

1.55ms

0.5

用户输入/输出

enq: TM - 争用

652

795.8

1220.55ms

0.5

应用领域

从此类 AWR 统计数据中通常可以得出以下结论:

1. Exadata magic对数据库性能的贡献不高——不超过5%,数据库“exadataizes”较差。

2、这样的数据库如果从Exadata转移到经典的“服务器+阵列”架构,那么性能不会有太大变化。 因为即使该阵列比 Exadata 存储系统慢三倍(这对于现代全闪存阵列来说几乎是不可能的),然后将 5% 乘以 15,我们就会将 I/O 等待份额增加到 XNUMX% - 数据库肯定会幸存下来!

这两个结论都是不准确的,而且它们扭曲了对 Exadata 软件背后理念的理解。 Exadata 不仅提供快速 I/O,其工作方式与经典服务器 + 阵列架构有根本不同。 如果数据库操作真正“适配”了,那么SQL逻辑就会转移到存储系统上。 存储服务器借助许多特殊机制(主要是 Exadata 存储索引,但不仅限于此),可以自行查找必要的数据并将数据库发送到服务器。 它们的执行效率非常高,因此典型的 Exadata 等待时间在总响应时间中所占的比例很小。 

在 Exadata 之外,这一份额将如何变化? 这将如何影响整个数据库的性能? 测试将最好地回答这些问题。 例如,等待 Exadata 外部的“单元智能表扫描”可能会变成繁重的表全扫描,导致 I/O 占用整个响应时间,并且性能急剧下降。 这就是为什么在分析 AWR 时,将 Exadata 预期的总百分比视为其对性能的魔力贡献是错误的,使用该百分比来预测 Exadata 之外的性能更是如此。 要了解数据库的工作有多“精确”,您需要研究“Instance Activity Stats”部分的 AWR 统计数据(有很多具有不言自明的名称的统计数据)并将它们相互比较。

要了解 Exadata 之外的数据库的感受,最好从目标架构上的备份进行数据库克隆,并分析该克隆在负载下的性能。 一般来说,Exadata 所有者有这个机会。

作者: Alexey Struchenko,Jet Infosystems 数据库部门负责人

来源: habr.com

添加评论