作者:孙健
爱可生研发工程师,负责高可用组件相关开发。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


一、背景

QAN(Query Analytics)慢查询日志分析工具是 PMM 的一部分,PMM 是 percona 公司提供的一个对于 MySQL 和 MongoDB 的监控和管理平台。官方给出的描述是:The QAN is a special dashboard which enables database administrators and application developers to analyze database queries over periods of time and find performance problems. QAN helps you optimize database performance by making sure that queries are executed as expected and within the shortest time possible. In case of problems, you can see which queries may be the cause and get detailed metrics for them。这是一个慢查询日志的展示工具,能够帮助 DBA 或者开发人员分析数据库的性能问题,给出全面的数据摆脱直接查看 slow-log。那么接下来,给大家介绍下 QAN 和其页面的指标吧。

二、QAN(Query Analytics)

PMM 目前有 2 个版本,但是对于 QAN 来说其大致由三部分组成:

  • QAN-Agent(client):负责采集 slow-log 的数据并上报到服务端
  • QAN-API(server):负责存储采集的数据,并对外提供查询接口
  • QAN-APP:专门用来展示慢查询数据的 grafana 第三方插件

1. 数据流转

slow-log --> QAN-Agent --> QAN-API <–> QAN-APP(grafana)

2. pmm1 架构图

3. pmm2 架构图

三、slow-log

MySQL 的慢查询日志是 MySQL 提供的一种日志记录,它用来记录在 MySQL 中响应时间超过阀值的语句,具体指运行时间超过 long_query_time(默认 10 秒)的 SQL,则会被记录到慢查询日志中,慢查询日志文件格式如下:

...# Time: 2020-04-25T05:29:35.954373Z
# User@Host: root[root] @ localhost []  Id:     9
# Query_time: 5.000901  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1587792575;
select sleep(5);
# Time: 2020-04-25T05:43:07.595615Z
# User@Host: root[root] @ localhost []  Id:     9
# Query_time: 5.000904  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1587793387;
select sleep(5);...
  • Query_time:语句执行时间,以秒为单位
  • Lock_time:获取锁的时间,以秒为单位
  • Rows_sent:发送给客户端的行数
  • Rows_examined:检查的行数(不计算存储引擎内部的处理)
  • SET timestamp:写入慢查询日志文件的每个语句之前都有一个 SET 语句,该 SET 语句包括一个时间戳,指示时间戳何时记录慢语句(在该语句完成执行之后发生)

四、页面

1. Query Analysis

默认展示 top 10 的慢 SQL,表格包含三列指标信息 Load、Count、Latency。

下图是测试一条慢 SQL select sleep(5) 生成的数据,选定 2 分钟的页面:

1.1 Load

代表选定时间段内,数据库服务器该 query 查询时间 的时间占比,通过公式计算:query_time/(end_time - start_time):20/120 ~= 0.17。

1.2 Count

代表选定时间段内,该 query 的请求总数。

1.3 Latency

代表选定时间段内,展示该 query 的执行平均时间、最大时间、最小时间、时间 95%(抛弃前 5% 的数据在求平均,目的是为了去除尖峰);

2. Metrics

选中 Query Analysis 中的一列 query 后,即可展示该 query 的详细信息,包括Query_time、Lock_time、Rows_sent、Rows_examined,对应的是 slow-log 的内容 。

3. 额外信息

选中 Query Analysis 中的一列 query 后,也会额外提供 query 涉及的一些信息,包括:EXPLAIN,SHOW CREATE TABLE,SHOW INDEX 来帮助数据库运维人员快速定位问题。

总结

percona QAN 作为一款非常实用的免费开源方案,如此优秀的产品目前也是爱可生数据库管理平台问题诊断全家桶的一部分。

参考链接

  • https://www.percona.com/blog/2018/06/08/understanding-pmm-qan-graphs-metrics/

  • https://www.percona.com/doc/percona-monitoring-and-management/2.x/qan-top-ten.html

技术分享 | percona QAN 介绍相关推荐

  1. 【百度技术分享】San介绍以及在百度APP的实践

    导读:San是百度自研的高性能MVVM框架,它是一个快速.轻量.灵活的JavaScript组件框架,体积小巧,兼容性好,性能卓越,目前已落地百度APP包括搜索.feed.小程序等核心业务,服务于亿级用 ...

  2. 技术分享 | 半监督学习介绍

    / 背景 / 遥感图像的语义分割在城市规划.变化检测和地理信息系统建设中具有重要意义.在过去的几年中,一些研究者利用SIFT信息.纹理信息等特征对超像素进行分类.在多尺度上选取合适的超像素对遥感图像进 ...

  3. 技术分享(持续更新)

    这次的技术分享跟大家介绍一个出现在Tinder and Potluck中的动画效果实现思路,最贴心的是作者提供了OC和Swift两个版本来供开发者使用. OC:https://github.com/z ...

  4. iOS-FXDanmaku弹幕库介绍、相关技术分享

    前言 去年, 2016年, 一大波直播平台在移动端涌出, 直播慢慢步入了人们的视角. 网上如今能够看到各式各样的直播, 如秀场直播.游戏直播.体育直播.娱乐直播等等. 在各种类型的直播中, 弹幕在PC ...

  5. AEM技术分享(一)AEM介绍

    AEM是什么? AEM全称Adobe Experience Management,是一套基于OSGI.Apache Sling和Java Content Repository技术的完整企业解决方案,多 ...

  6. 技术分享|在Ubuntu下编译安装GreatSQL

    本文首发于GreatSQL社区,原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1.准备工作 1.1.配置Ubuntu环境下的apt源配置文件 1.2.构建docker镜像 2.编译Grea ...

  7. UI培训技术分享:设计大神都在用的10种技法!

    越来越多的人开始学习UI设计,想要进群到UI设计这个行业,本期小编为大家介绍的UI培训教程就是关于设计师会经常用到的一些技巧,帮助大家后期的工作中的应用. UI培训技术分享:设计大神都在用的10种技法 ...

  8. python个人博客搭建说明书_技术分享|利用Python Django一步步搭建个人博客(二)...

    原标题:技术分享|利用Python Django一步步搭建个人博客(二) Hello,欢迎来到我们的"利用Python Django一步步搭建个人博客"系列的第二部分.在第一部分中 ...

  9. UWP 手绘视频创作工具技术分享系列 - 手绘视频导出

    原文:UWP 手绘视频创作工具技术分享系列 - 手绘视频导出 手绘视频最终的生成物是视频文件,前面几篇主要讲的是手绘视频的创作部分,今天讲一下手绘视频的导出问题.主要以 UWP 为例,另外会介绍一些 ...

最新文章

  1. Delphi 与 DirectX 之 DelphiX(52): TDIB.DoSaturation();
  2. Android Activity启动模式,回退栈管理!
  3. 1.15 Python基础知识 - 函数
  4. 研发团队资源成本优化实践 1
  5. Shiro的鉴权方式
  6. jquery获取元素颜色css('color')的值返回RGB
  7. ORACLE系统表和视图
  8. 海康SDK设备信息NET_DVR_GET_DEVICECFG解析
  9. 计算机网络技术试题 中职,计算机网络技术试题(附答案)中等职业学校.doc
  10. 你是否也陷入了《能力陷阱》?
  11. Vue3学习笔记(B站李南江)
  12. linux cat命令什么意思
  13. 工欲善其事,必先利其器-器
  14. 简单聊一聊如今火爆当下的数字孪生技术到底为何物
  15. 【数据库】数据库编程
  16. 逻辑归纳与数学归纳:皮亚诺公理5解读1——皮亚诺读后之七
  17. 【个人练习3.11】7 c++练习题
  18. HashMap、HashTable和ConcurrentHashMap的区别?
  19. 【Oracle特殊字符的处理方式】
  20. 学校教的Python,找工作没企业要,太崩溃了【大四真实求职经历】

热门文章

  1. 【带锁的门】(在走廊上有n个带锁的门,从1到n依次编号。最初所有的门都是关着的。我们从门前经过n次,每次都从1号门开始。在第i次经过时(i = 1,2,…, n)我们改变i的整数倍号锁的状态)
  2. 机器人弧焊自动化最全知识汇总!具有收藏价值
  3. Python:reshape()函数
  4. canvas前端生成海报、二维码、截取节点生成图片
  5. 用信息化手段打赢疫情防控阻击战
  6. OSSIM下添加oracle listener.log
  7. MacBook删除应用后Launchpad上残留空白图标?
  8. 显示访客的IP地址的代码
  9. 引流虚拟主机和服务器,2020微商引流客源_虚拟主机对SEO
  10. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用38