DBA的必备指南:解决数据库慢查询
对于一个 DBA 来说,从公司数据库系统的稳定程度可以看出他的能力几何,一个优秀的 DBA 不仅要保证数据库的稳定运行,还需要有能力有效处理数据库的各种突发性能问题,而最常见的性能问题,就是慢查询。
我们公司规模比较大,大大小小的项目加起来超过 100 个数据库实例,而保证这些数据库的稳定运行的重任,全部在我这里,每天都需要事无巨细地逐个排查所有问题,这是一项相当艰巨的任务,出点差错是常事,造成的影响不大还好说,如果涉及到企业利益,那就祈祷下一家公司没有那么多数据库吧。
太难了
由于每个数据库实例中都存在不少的慢查询问题,靠我人肉排查显然不太现实,在尝试了很多种自动化工具之后,终于艰难玉成,让我找到一款完美解决我问题的工具:NineData 的慢查询分析功能。它可以自动采集并记录数据库中的所有慢查询,比较亮眼的是它通过对每一条慢查询进行性能诊断,最终提供优化建议,包含添加或修改索引、调整表结构等,同时还可以根据业务类型配置 SQL 开发规范,配置完成后,系统还会基于这些规范诊断慢 SQL。
废话不多说,直接上图。
慢查询趋势图
这是单个数据源维度的慢查询趋势图,首先能看到一个时间范围内的慢查询总量,然后可以清晰看到 12 月 8 日那天产生了很多慢查询,鼠标悬浮在曲线上可以看到详情。
NineData慢查询趋势图
慢查询统计
显示该数据库在某个阶段产生的所有慢查询的详情信息。SQL 模版表示不包含具体参数的 SQL 框架,所有使用了相同 SQL 模版的慢查询都会被记录在一个模版下,展开模版可以看到所有慢 SQL 语句,包含的信息也是非常丰富,例如执行时长、查询时间、执行查询的用户、主机名称等等。
NineData慢查询统计
诊断优化
针对慢查询的 SQL 语句进行性能诊断,性能诊断的结果包含执行时间过长、有效读较低、等待时间占比偏高、缓存命中率低下等;规范审核基于管理员配置的 SQL 开发规范对 SQL 语句进行审核;索引建议基于 CBO 成本代价模型提供索引推荐,帮助 DBA 轻松优化数据库性能。
NineData诊断优化
这个工具,对于我来说简直就是久旱逢甘霖,DBA 需要的功能,它都有了,像我这种每天加班到 22 点以后的社畜,最近也开始准点下班了。
开始准点下班了
最新更新
就在近期,他们又针对慢查询分析功能发布了数据大盘和报表下载功能。
前面说过公司有 100 多个数据库实例,并且每个实例的慢查询数量都很多...那么问题来了,如果我要治理慢查询,就需要先一个一个数据源点开,找到需要治理的数据源,再进行治理,非常费劲,而这个数据大盘,则是点睛之笔!
慢查询大盘
支持按数据源、环境、标签、数据源类型进行查看,哪个数据源产生的慢查询最多一目了然。
NineData慢查询大盘
TOP 100 数据源
由高到低展示前 100 个慢查询数量最多的数据源,单击详情即可快捷进入该数据源的慢查询页面实施治理,非常方便。
NineData显示TOP 100数据源
报表下载
这个功能在我需要将优化需求提交给开发人员的时候非常有用,在数据源慢查询详情页中可将目标时间段的所有慢 SQL 整合到一个 PDF 文档中,其中包含了所有需要整改的详情信息,以便开发人员对照优化。
NineData生成慢SQL报表下载
后记
自从用了这个工具,我每天早上来到公司,慢悠悠泡一杯咖啡,然后打开电脑登录到 NineData 的控制台,查看一下前一天的慢查询报告,几分钟后,我就全面了解到了我们公司数据库这几天的整体状况,直接就可以投入到更加核心的整改工作中,而不用和以前一样花费大量的时间和精力去排查问题了,工作效率提升非常明显。
最重要的是,这款工具的可靠性非常高,通过几天的使用,没有发生任何遗漏,每一个细小的点都会被它捕捉并呈现,老板再也不用斥巨资招 N 个 DBA 处理这些问题,终于不用再卷了。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
技术分享 | ChatGPT API 调用总超时?破题思路在这
问题重现 在调用 ChatGPT API 并使用流式输出时,我们经常会遇到网络问题导致的超时情况。有趣的是,笔者发现在本地调试遇到的超时,会在 10 分钟后自动恢复(为什么是 10 分钟?我们留到后面解释),但是在服务器上等待一会儿却会失败,报出超时异常(错误代码 502)。 笔者认为,本地能恢复的原因可能是自动重试,只是重试的时间有点久(ChatGPT API 没有重试功能,这是项目加入的)。服务器返回「502」是因为内容从后台返回到前端需要经过网关层,而网关层超时校验的时间比自动重试的时间(10 分钟)更短,所以撑不到重试就会报超时异常。 基于以上场景,本文着手解决 ChatGPT API 调用超时问题。 优化诉求 不向用户展示超时的报错信息。 缩短超时后重试的时间间隔。 解决思路 笔者考虑了两种方案。 一是彻底解决网络问题,但难度有点大。 这属于 OpenAI 服务器问题,即使是部署在国外的服务器也会出现超时的情况。 二是利用自动重试解决问题。 通过调整超时的时间,提升响应速度,方案可行。 实施解决方案 解决过程中,笔者分两步由浅至深地调整了超时时间;如果想直接了解最终方案,请移...
- 下一篇
GaussDB SQL基础语法示例-数组表达式
一、前言 SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。 本系列将以《云数据库GaussDB—SQL参考》在线文档为主线进行介绍。 欢迎使用GaussDB数据库数组表达式。在本文中,我们将介绍GaussDB数据库中数组表达式的概念、语法和用法。GaussDB是一种高性能、高可扩展的分布式数据库,广泛应用于各种业务场景。数组表达式是GaussDB数据库中的一种强大功能,它允许用户在数据库查询中使用数组操作符和函数来处理数组类型的数据。通过学习本文,您将了解如何使用GaussDB数据库的数组表达式来简化数据处理流程,提高查询效率,从而更好地满足业务需求。 二、条件表达式的概念及GaussDB中的常见的数组表达式 GaussDB支持SQL语言以及一些扩展功能。在GaussDB中,数组表达式用于处理数组类型的数据。以下是一些常见的数组表达式: 1、IN :expression IN (value [, ...]) 使用IN运算符可以判断一个数组是否包含在一个给定的值列表中。如果数组包含所有在括号中指定的值,则返回t...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Mario游戏-低调大师作品
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能