了解数据库状态的关键:基线与容量

数据库 其他数据库
懂得容量分析的专家则更加直接,从180W+逻辑读和每个事务1W+逻辑读这这些指标上,马上发现了其中的不正常,可以比仅仅懂得基线分析的高级DBA更快地找到问题的关键点。​

DBA在运维工作中遇到最难的问题是如何判断数据库是否存在某个问题,特别是在国产数据库大行其道的今天,这方面的知识都需要重新构建。DBA能力的提升也正是判断能力提升所加持的,今天我们就来聊聊这方面的问题。

图片图片

对于各个阶段的DBA分析问题的主要方法,我简单总结一下,大概有四个阶段,每前进到一个新的阶段都说明DBA在能力上的断崖式提升。最初的时候,他们是根据现象来分析问题的。某个现象遇到过,那么就容易解决,如果没遇到过,可能就抓瞎了。

图片图片

在这个阶段遇到问题,首先根据现象去脑子里分析,是否曾经遇到过类似案例,如果没有,那么只能去网上搜索,再解决不了,就只能去向高手咨询了。这是一个DBA技能的初级阶段,还没有形成比较有价值的知识库,因此解决问题往往要凭运气。这是DBA靠天吃饭的阶段。

图片图片


随着DBA的能力的提升,分析问题不再是凭运气了。因为中级的DBA 已经对数据库的一些基本性的原理有所了解,因此不再仅仅依靠表象来分析问题,可以通过对内在原理的思考定位问题了。这个阶段中,指标是十分关键的东西。某些指标异常说明了什么,哪怕自己还不是很清楚,也知道通过一些渠道去找到比较靠谱的答案了。

在这个阶段中,唯一麻烦的就是,如何判断某个指标的正常与否,在这方面的积累还不够,因此判断问题的准确性还不够。有时候分析问题如水银泻地,有时候又像遇到一个堰塞湖一样前进不得。

图片图片

高级DBA对于上面的问题有比较标准的解决方案,那就是通过基线来分析问题。

图片图片

什么是基线呢?说起基线,可能有很多朋友在脑子里立马会浮现出一张指标的折线图,上下各有一条线,这是狭义的“基线”,不过并不是我今天想和大家分享的“基线”。我个人认为“从数据库运维的角度就系统而言,基线-BASELINE是某个运行状态在某个时间上的快照”,某个指标、某个运维经验、某个现象都可以成为运维基线;对于DBA,有价值的基线来自于长期运维的经验,并非仅仅对于某个指标的学习和理解。基线十分重要,因为基线是用于判别某个指标甚至某个现象是否正常的重要依据。

基线的积累十分困难,需要DBA经过长期的工作与思考才能逐渐丰富起来。哪些指标对于分析哪些问题有帮助,哪些基线的合理范围在哪个区间,哪些基线出现异常后可以使用的分析溯源方案有哪些,随着这些运维知识的不断积累,DBA的能力就会大幅提升。能够很好地利用基线去分析问题,是一个高级DBA的主要特征。

不过有些时候,基线也不见得能发挥作用了。比如有人问你某个系统,在2万IOPS下,IO延时是5毫秒,存储系统的状态是好是坏?某台服务器,HTTPS请求达到10万/秒,CPU使用率是20%,合理不合理?某个Oracle 数据库的library cache pin 等待时间是50毫秒,系统共享池是否存在问题?当前的系统,数据表空间会不会在3个月内用满?

要回答这些问题,仅仅依靠基线就不够了,这需要容量方面的知识。利用容量进行分析,不仅仅考虑基线的问题,还需要考虑系统的总体负载能力,考虑数据库标准操作产生的资源消耗情况,考虑不同硬件之间的容量差异,考虑信息系统长期发展的可持续问题。如果你已经积累了足以应对日常运维工作中的容量知识,那么恭喜你,在这个领域内,你已经是专家级别的存在了。

图片图片

比如说有这样一个案例,如上图的AWR数据。有一个系统,8月2日CPU从早上7点30开始到下午5点30都基本上处于100%,平时这个系统的CPU使用率不超过40%,8月3日起未见异常。如果DBA能够清晰地描述出上述问题,说明他已经初步掌握了基线分析的方法。我们如果再进一步利用基线的知识做分析,是可以完成问题定位的。

图片图片

不过实际上,分析工作没那么简单,因为导致出现上述现象的可能性很多。我们需要利用自己所掌握的知识去做排除。上述问题,仅仅能够依靠现象进行分析的朋友可能就无从入手了。

图片图片

而对于掌握了根据指标去分析问题的朋友首先会看到Library cache pin/lock等待事件延时很高。很容易就认为共享池问题可能是问题的关键。

图片图片

而更高一层次的DBA懂得了以基线分析作为分析问题的方法。他会发现共享池问题虽然存在,但是占比不高,逻辑读过高可能对CPU使用率过高产生的影响更大。他通过比对正常与非正常时段的逻辑读指标,就可以找到更加准确的分析路径。

懂得容量分析的专家则更加直接,从180W+逻辑读和每个事务1W+逻辑读这这些指标上,马上发现了其中的不正常,可以比仅仅懂得基线分析的高级DBA更快地找到问题的关键点。

责任编辑:武晓燕 来源: 白鳝的洞穴
相关推荐

2022-03-14 09:44:14

数据库虚拟化

2021-02-21 22:26:15

数据库测试数据库

2010-12-27 14:45:27

2023-02-28 07:34:12

数据库索引

2010-12-29 09:46:32

2010-12-29 09:50:06

数据库安全审计数据库审计

2020-07-21 07:42:29

数据库信息技术

2018-09-10 15:55:01

数据库UCloud架构设计

2018-09-06 16:10:37

数据库大数据区块链

2011-04-19 11:02:57

数据库分页

2011-04-06 14:37:37

2018-12-27 10:46:20

数据库工程师DBA

2022-02-11 09:37:40

数据网络安全网络攻击

2018-08-07 09:45:17

数据库数据库密码破解密码

2018-09-25 08:33:38

数据库锁JavaSQL

2020-04-17 10:45:21

数据中心IT技术

2011-05-19 11:00:44

数据库加密

2015-05-04 14:17:16

数据库架构高可用

2010-10-28 15:37:36

高可用架构

2019-06-24 06:17:38

点赞
收藏

51CTO技术栈公众号