开发者社区> 好麦> 正文

数据库实例性能调优利器-Performance Insights最佳实践

简介: 作者: 风移 Performance Insights是什么 阿里云RDS Performance Insights是RDS CloudDBA产品一项专注于用户数据库实例性能调优、负载监控和关联分析的利器,以简单直观的方式帮助用户迅速评估数据库负载,资源等待的源头和对应SQL查询语句,以此来指导用户在何时、何处、采取何种行动进行数据性能优化。
+关注继续查看

作者: 风移

Performance Insights是什么

阿里云RDS Performance Insights是RDS CloudDBA产品一项专注于用户数据库实例性能调优、负载监控和关联分析的利器,以简单直观的方式帮助用户迅速评估数据库负载,资源等待的源头和对应SQL查询语句,以此来指导用户在何时、何处、采取何种行动进行数据性能优化。

几个名词解释

Performance Insights:中文翻译过来叫性能洞察。
Active Session (AS):RDS数据库系统中,活跃的会话数量。
Average Active Session (AAS):一段时间内,RDS数据库中平均活跃会话数量。
Max Vcores:RDS数据库实例最大可以使用到的CPU Cores数量。

AAS和MaxVcores来量化系统瓶颈

在文章开始,我们希望能够把一个非常重要的问题解释清楚:为什么可以使用AAS (平均活跃会话数)与RDS数据库实例MaxVcores量化对比来作为系统瓶颈的判断依据?我们的理由是:

首先,RDS数据库系统中,我们认为最为重要的资源是CPU资源,因为其他所有资源都需要CPU来调度。

其次,CPU的并发处理能力,与CPU Cores的数量相关。假设在相当小的一个时间切片上,CPU对活跃会话(AS)处理能力瓶颈就是CPU Cores数量。即:CPU最多同时能够处理与Cores数量均等的活跃会话数。

因此,我们可以用RDS数据库系统中,平均活跃会话(AAS)数与MaxVcores数的量化对比,做为判定系统是否存在瓶颈的重要依据。

Performance Insights能做什么

阿里云RDS Performance Insights能够帮助我们的用户快速方便、直接了当的发现数据库实例负载,以及导致性能问题的SQL语句。目前Performance Insights页面以三个方面承载我们的产品思路:

  • 关键性能指标趋势图:关键资源利用率变化趋势图。
  • 实时AAS变化趋势图:数据库实例中平均活跃会话(Average Active Sessions)实时变化趋势。
  • 多维负载信息:展示多维度实例负载信息。

关键资源利用率趋势图

阿里云RDS Performance Insights关键性能指标的趋势图,可以从宏观的角度帮助客户发现实例负载的来源,比如:到底是CPU资源吃紧,IOPS过高?还是网络开销过大,又或是活跃连接数打满?

实时AAS变化趋势图

从关键资源利用率趋势图部分,我们已经大致清楚了实例负载的来源。接下来,带着这个问题,我们去看看目前实例中活跃会话的资源等待情况。那么,此时我们可以来到页面的第二个部分:实时AAS变化趋势图。

从Performance Insights中的实时AAS变化趋势图中,我们可以非常清晰的发现RDS实例中的资源等待情况。比如上图,我们可以分析出以下重要信息:

  • 时间10:25 - 10:57之间,平均活跃会话远远大于实例CPU Cores数量24(几个点低于CPU Cores),说明数据库已经面临比较大的系统瓶颈。
  • 从AAS变化趋势图来看,几乎是在等待蓝色标示的资源,即CPU资源。

由此可见,我们使用Performance Insights中的实时AAS变化趋势图,可以非常清晰简单,直接了当的找到用户RDS实例负载来源,资源等待于何时、何处,以及变化规律。

多维度负载详情

通Performance Insights中的实时AAS变化趋势图,掌握了实例负载来源,资源等待及变化规律,接下来用户理所应当最关心的一个问题便是:到底导致这些实例负载的具体查询语句是什么?哪个用户导致的?哪个连接主机客户端?哪个应用数据库?这一系列的问题我们可以使用多维负载信息部分来解答。

从以上截图的下半部分,我们可以方便的找出与AAS变化趋势关联的负载对应的SQL查询语句,以及每个语句对AAS的贡献的对比情况。当然,您也可以根据自己的需要切换为Waits,Users,Hosts,Commands,Databases和Status,分别表示资源等待,用户,客户端主机,命令类型,数据库,进程状态等维度查看。

Performance Insights架构

了解阿里云RDS Performance Insights能够做什么以后,让我们来看Performance Insights的设计架构图,简要概括为五个字:四层两链路。

四层架构

RDS Performance Insights四层架构从上往下,依次为:

  • 应用层:前端用户可见,承载着我们产品的思路和逻辑,是终端用户可见的产品呈现。
  • 服务层:各系统API协调工作,为应用层提供应用数据服务,我们产品主要的业务逻辑处理层。
  • 数据层:数据实时处理平台,统计汇总,数据扁平化,实时计算,最终持久化到元数据库中,为服务层提供数据。
  • 采集层:从RDS实例中,采集有价值的基础数据,为数据层输入数据。

两条链路

从数据链路来看Performance Insights,有两条链路:

  • 访问链路:数据至上而下请求访问,至下而上的数据返回。
  • 采集链路:数据从生产到消费,从统计汇总到最终落库整个生命过程。

典型案例

以下两个典型案例,来看看Performance Insights如何一目了然,一针见血的帮助我们诊断分析数据库系统瓶颈,资源等待和SQL查询语句。

  • 为什么CPU 100%了
  • XXX时间点SQL查询变慢了

为什么CPU 100%了?

在我们多年的专家服务过程中, 遇到最多的用户问题便是“为什么我的CPU 100%了”,来看看Performance Insights是如何庖丁解牛这个问题。

Performance Insights截图

以下是该RDS实例,Performance Insights页面截图。

分析

我们从Performance Insights页面截图分析出以下几个问题:

  • 从资源利用率中CPU使用率和活跃会话数量来看:大概在 09:59 - 10:05,均有大幅上升。CPU使用率达到了100%,活跃会话(Active Sessions)达到了400+;
  • AAS变化趋势中发现,这段时间内,系统瓶颈主要集中在CPU和Lock两资源的等待,总的Active Sessions数远远超过CPU Cores(实例的CPU Cores为16),存在严重的系统瓶颈。
  • SQL语句详情部分:非常清晰的看到排在第一位的SQL查询语句是等待CPU资源,达到了96个活跃会话;第二位是Lock资源等待,达到了79个会话,可以点击SQL语句,查看详情。

XXX时间点SQL查询变慢了

另外,用户经常遇到的一个问题是“为什么我的SQL查询语句突然变慢了”?

Performance Insights截图

某RDS实例用户反馈在16:05左右,原本执行很快的Update语句,突然变得很慢,16:08左右恢复正常,以下是该RDS实例Performance Insights页面截图。

分析

从Performance Insights截图,我们可以分析出:

  • 从AAS变化趋势图中,发现大约从16:05:50秒开始,系统出现了大量等待Lock资源的活跃会话(图中橙色颜色区域),达到了33个,远超CPU Cores数。
  • 从截图最下部分SQL查询中,发现等待Lock资源的SQL语句(第一条,橙色标示),恰巧是用户抱怨变慢的Update操作语句。于是我们可以很快断定,这个Update变慢的原因是资源被锁住,导致等待锁资源释放时间过长,拉长了执行时间,即Update语句变慢了。
  • 从AAS变化趋势图中,发现大约在16:07:20左右,等待锁资源的活跃进程消失了,Update语句性能恢复正常,说明锁资源已经释放。

以上,我们从两个特定的用户案例可以看到Performance Insights可以简单直观,轻松愉悦的帮助用户诊断问题,关联分析系统瓶颈,资源等待和SQL查询,取得了非常好的效果。

Performance Insights的未来

伴随阿里云RDS Performance Insights第一期发布,我们已经可以帮助用户快速发现RDS实例性能问题,以及导致性能问题的具体SQL查询。但是,这远远不够,我们还需要更深入的帮助我们的客户自动化、智能化解决问题。

从“是什么”到“为什么”

当前,用户通过阿里云RDS Performance Insights找到了导致性能问题的具体查询SQL语句后,接下来很自然的一个问题是,为什么这个查询语句会导致性能问题?是缺失必要的索引?统计信息数据倾斜?查询数据类型转换?Non-SARG查询等等?接下来,我们需要深入探索为什么SQL会导致性能问题。

从“为什么”到“怎么办”

当用户知道了SQL语句为什么有性能问题以后,接下来的问题便是:我该怎么做才能解决性能问题?我们需要明确告诉用户怎么办就能够解决性能问题。

从“怎么办”到“自动办”

随着用户能够解决SQL语句性能问题以后,用户接下来最为迫切的需求便是:阿里云能否帮我们预先发现、智能化、自动化处理解决这些类似的问题?

以上,便是RDS Performance Insights的产品脉络,从是什么到为什么;从为什么到怎么办;从怎么办到自动办,层层递进,步步为营,一步一步创造客户越来越高的诊断优化需求。

最后总结

阿里云RDS Performance Insights是数据库实例性能调优、负载监控、关联分析的必备利器,它可以帮助用户决策从何处下手,何时采取行动,采取何种行动以及智能化自动解决问题根源。我们有能力有信心可以帮助我们的客户更好的上好阿里云,用好阿里云。

福利:云数据库MySQL试用半年仅需10元,点此查看>

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
sql server 性能调优 资源等待之网络I/O
原文:sql server 性能调优 资源等待之网络I/O 一.概述    与网络I/O相关的等待的主要是ASYNC_NETWORK_IO,是指当sql server返回数据结果集给客户端的时候,会先将结果集填充到输出缓存里(ouput cache),同时网络层会开始将输出缓存里的数据打包,由客户端接收。
1005 0
.NET性能调优之一:ANTS Performance Profiler的使用
.NET性能调优系列文章 系列文章索引 .NET性能调优之一:ANTS Performance Profiler的使用 .NET性能调优之二:使用Visual Studio进行代码度量 .NET性能调优之三:YSlow相关规则的调优工具和方法 在使用.NET进行快速地上手与开发出应用程序后,接下来面临的问题可能就是程序性能调优方面的问题,而性能调优有时候会涉及方方面面的问题,如程序宿主系统、数据库、网络环境等等,而当程序异常庞大复杂的时候,性能调优将变得更加无从下手。
1226 0
【最佳实践】OSS开源工具ossutil-上传性能调优
经常碰到内部同学或者外部客户问ossutil关于并发上传性能的问题。本文简单描述下ossutil并发上传原理并举例说明。 用户可从这里获取ossutil。 官网:https://help.aliyun.com/document_detail/50452.html代码:https://github.com/aliyun/ossutil 参数 --recursive 上传文件到oss时,如果file_url为目录,则必须指定--recursive选项,否则无需指定--recursive选项。
5905 0
一个相同查询在不同 RDS for MySQL 实例上性能差异的案例分析
一个相同查询在不同 RDS for MySQL 实例上性能差异的案例分析 1. 问题出现 2. 问题原因 3. 问题解决 4. 问题结论 相同查询在数据量相近的情况下在不同 RDS for MySQL 实例上有不同的性能表现,容易引发用户对 RDS for MySQL 实例的性能差异性的疑虑,本文分享下近期碰到的一个原因比较隐蔽但很常见的案例。
154 0
DRDS和RDS只读实例性能对比测试
我们都知道,对于数据库中基础信息表来说,它的数据变化频率低,数据量小,但由于基础数据本身的特点,大多数相关系统都会对频繁地读取它。即便我们通过对数据调取服务进行服务化包装,通过HSF服务的方式对外暴露,以减少多个系统直接操作数据库带来的问题,但数据本身的读取频率和并发度都非常高,QPS可以轻易达到10万以上。
333 0
SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database)
原文:SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:运用游...
1027 0
.NET性能调优之二:使用Visual Studio进行代码度量
.NET性能调优系列文章 系列文章索引 .NET性能调优之一:ANTS Performance Profiler的使用 .NET性能调优之二:使用Visual Studio进行代码度量 .NET性能调优之三:YSlow相关规则的调优工具和方法 使用Visual Studio进行代码度量 在这篇文章里,暂且抛开代码、数据库和网络的优化,从软件代码度量的角度来看看其对.NET性能调优的作用。
1016 0
Spring Security笔记:使用数据库进行用户认证(form login using database)
在前一节,学习了如何自定义登录页,但是用户名、密码仍然是配置在xml中的,这样显然太非主流,本节将学习如何把用户名/密码/角色存储在db中,通过db来实现用户认证 一、项目结构 与前面的示例相比,因为要连接db,所以多出了一个spring-database.
928 0
[20140804] 疑似存储上线导致数据库一致性问题
背景:       同一个存储设备提供了2块存储,1块已经在使用 a,另外一块没有使用b。 疑似:       当b初始化,上线之后,导致在a存储的数据库文件出现一致性问题。 原理:   具体原理目前不清楚,也是第一次碰到(看到文章的各位以后务必小心) 解决方法:       幸好有数据库镜像,打算切换数据库镜像,然后备份数据库镜像,还原到原来的master。
438 0
+关注
好麦
阿里云数据库RDS资深运营
7
文章
5
问答
来源圈子
更多
阿里云数据库:帮用户承担一切数据库风险,给您何止是安心!支持关系型数据库:MySQL、SQL Server、PostgreSQL、PPAS(完美兼容Oracle)、自研PB级数据存储的分布式数据库Petadata、自研金融级云数据库OceanBase支持NoSQL数据库:MongoDB、Redis、Memcache更有褚霸、丁奇、德哥、彭立勋、玄惭、叶翔等顶尖数据库专家服务。
+ 订阅
相关文档: 云数据库 OceanBase 版 可信账本数据库 云原生关系型数据库 PolarDB PostgreSQL引擎
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载