问诊白求恩之性能分析:把握趋势比你更了解你的库

如果问你,你的数据库性能如何,你会怎么回答呢?

DBA 甲: db file sequential read等待事件经常出现,不知道什么原因。 DBA 乙:平常负载不高,但偶尔周一业务高峰期就撑不住挂掉了。 DBA 丙:有一些SQL语句执行非常慢,但业务不给改,也没有办法。

以上会不会恰好也是你的答案?

我们都在做运维,但往往被人问起才发现,自己并不懂自己的数据库。数据库的性能分析是一个很广泛的话题,涉及到的内容非常多,对于大多数的DBA来说都是一个复杂的让人头疼的问题,优化更是难上加难。今天,有一个人,他比你更了解你的数据库性能!他的名字叫:白求恩 - Bethune 。

你不信?请跟我一起看。

在云和恩墨自主研发的数据库智能诊断平台Bethune上,对于数据库性能做了全方位多角度的分析和检测,让你对数据库性能有更直观的认识。

这些维度包括:

  • AWR/SGA分析
  • 整体负载分析
  • 等待事件
  • Top SQL

AWR/SGA分析

在采样数据中,Bethune会以DB time为判断指标进行趋势展现,让你更了解数据库的日常工作状态。通过将高负载处的DB time进行分解,更可以发现可能存在的性能问题:

上图为例,在43211的DB time时间内,CPU的时间只占1/4左右。在DB wait中,由网络和系统导致的等待时间较长,同时,commit等待的时间较长,可猜测系统写IO性能较差。

对于DB time过高的时间点,Bethune则会认为是异常点并以提示的信息展现:

对于SGA的使用,则对SGA中不同组件的使用情况做了节点间的对比:

对于使用情况有异常的组件,白求恩会给出提示信息及调整建议:

整体负载分析

在性能模块下选择:【整体负载】

白求恩列举了共24个负载指标,并通过两个节点的对比,结果展现更直观易懂。

如上图,通过gc cr相关的指标对比发现,集群节点间存在较多的交互。

并通过时间模型,详细展示了数据库消耗在各方面的时间。

等待事件

对于系统等待事件,在页面上做了详细的展示:

将鼠标放到对应的时间点,会以表的方式呈现:

我们看到,在该实例中,log file Sync的等待事件占了总共DB time的40%以上。

log file Sync等待事件产生的原因与以下几种:

1.频繁提交或者rollback,检查应用是否有过多的短小的事务,如果有,可以使用批处理来缓解。

2.操作系统IO缓慢。

3.log_buffer 过大。这种情况,可以调小参数_LOG_IO_SIZE参数,其默认值是LOG_BUFFER的1/3或1MB,取两者之中较小的值。

4.CPU负载高。

5.RAC私有网络性能差,导致LMS同步commit SCN慢。

当然需要结合系统的具体情况才能给出精确的结论。

Top SQL

在一个awr里面我们可以快速的识别按照执行时间或者资源消耗排序的 topsql,但Oracle数据库默认每一个小时就会产生一个awr snapshot,一个snapshot 里面至少包含几十条topsql。在一周甚至一个月的awr snapshot 里面。到底哪些sql值得你真正关注?这个不仅仅需要数据库的专业知识,还需要做一定的统计分析。

Bethune topsql 智能推荐引擎,基于采集到的数据样本,从dbtime整体相关性和峰值影响两个维度去给你推荐了值得你关注的10条topsql。我们在sql summary 表格里面展示了该top sql 在采集周期里面的性能汇总数据。点击sql_id,还能看到该sql 的详细资源消耗,获取行数的趋势。执行计划的细节。执行计划里面涉及到对象的统计信息。一应俱全。丰富而关键的信息,节省了运维工程师大量的发现问题和诊断问题的时间。

这是topsql的总览,我们通过算法算出值得你关注的10条topsql之后,在awr的性能数据里面去做了历史趋势绘图。

对于性能比较差的SQL,或有明显问题的SQL,我们以提示的方式展现,告诉你SQL语句的问题出在哪里。

对于top SQL的指标,也有更详细的说明:

在上图中,点击sql id,会跳转至一个新的页面:

这个页面包含SQL文本,SQL趋势分析,执行计划,谓词信息等。

点击上图中执行计划里的对象,对象涉及的表信息,列信息,索引信息,分区信息,一应俱全。

有这样完整的信息,节省了运维工程师大量的发现问题和诊断问题的时间。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-06-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

如何提升Java应用程序性能

【摘要】本文首先介绍了负载测试、基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践。最后研究了JVM特定的调优技巧、数据库端的...

1897
来自专栏IT技术精选文摘

Go语言构建千万级在线的高并发消息推送系统实践

1602
来自专栏IT大咖说

关于Kubernetes原生无服务框架,你知道多少?

内容来源:2018 年 09 月 16 日,当当网数字业务事业部技术总监李志伟在“中国云原生用户大会”进行《基于 Kubernetes 的 FaaS 平台开源实...

842
来自专栏云成本管理

云成本管理方法论(三)——云优化管理之判定规则

云优化管理四个管理维度中管理时点在通用管理模型基础上不需要额外补充,所以主要说明其他三个维度(管理对象、判定规则和管理措施)。另外,为了贴近我们熟悉的优化概念,...

47319
来自专栏后端技术探索

携程异步消息系统实践

今天会跟大家分享一下我们在携程,现在应该是正在推广的一个新的消息系统,主要会偏重于讲一些架构和实现方面的内容。目前我在携程大概一年多都在做新的消息系统Herme...

1002
来自专栏小勇DW3

redis cluster是如何做到集两家之长的

站在读写分离的层次看redis的时候,redis和master和slave存在明显的主从关系,也就是说master处于管理状态,salve跟着大哥混,maste...

1052
来自专栏Java架构师学习

多研究些架构,少谈些框架——一名阿里架构师的笔记

微服务架构和SOA区别 微服务现在辣么火,业界流行的对比的却都是所谓的Monolithic单体应用,而大量的系统在十几年前都是已经是分布式系统了,那么微服务作为...

3388
来自专栏架构师之路

互联网分层架构之-DAO与服务化

互联网分层架构的本质,是数据的移动。 互联网分层架构演进的核心原则: 让上游更高效的获取与处理数据,复用 让下游能屏蔽数据的获取细节,封装 这些在上一篇《互联网...

3488
来自专栏c#开发者

.net开发框架比较

.net开发框架比较 纯属个人在使用过程中的一点点体会 Web开发框架 Dynamic Data Web Site Asp.n...

3387
来自专栏JAVA高级架构

多研究些架构,少谈些框架(3)-- 微服务和事件驱动

接上篇,我们采用了领域驱动的开发方式,使用了充血模型,享受了他的好处,但是也不得不面对他带来的弊端。这个弊端在分布式的微服务架构下面又被放大。 事务一致性 事务...

2754

扫码关注云+社区