暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GaussDB智能诊断

db_user 2023-09-11
225
GaussDB在故障诊断方面有哪些能力?

1. SQL自诊断

我们基于离线+在线的方式进行SQL诊断,首先收集可能存在慢SQL的场景,包括SQL文本、SQL执行时间以及扫描行数、返回行数,并收集跟数据库、操作系统或者是资源相关的关键指标,通过业务SQL信息和关键指标信息,进行离线的训练,最终得到一个慢SQL特征库。

这个特征库有什么用呢?当我们在生产环境中遇到慢SQL问题,可以基于特征库和KNN算法进行在线推理,诊断出SQL产生的原因,然后针对根因给出一些优化建议。

2. SQL全链路分析

之前有客户反馈,平时我们的SQL执行非常快,能在一秒内返回,但是最近反馈偶现执行频繁超时。我们业务人员通过查看每一层状况,对客户端、数据库CN、DN、操作系统等进行串行分析,发现这个偶现的问题可能发生在某个分片上,这样的诊断效率非常低。

GaussDB提供的SQL全链路监控分析能力则很好地解决了这个问题。它包括全链路追踪和聚合分析两方面,通过业务SQL关键字或客户端traceID等条件查询到数据库SQLID,并追踪该SQL在数据库集群中的解析过程和执行耗时,以及每条SQL在集群中的转发、聚合情况,进而追踪到问题发生的源头。

3. 多维指标关联分析

数据库运维过程中需要对大量指标进行监控,当其中某个或多个关键指标发生异常时,运维人员需要快速准确定位到异常根因,以便决定下一步的操作。但是当指标数量很多时,筛选信息的工作量也会很庞大,因此我们需要一个高效的工具去解决这个问题。

我们知道某些数据库指标之间是存在强关联性的,通过有方向性的关联性算法,在异常发生时将同一时间段的指标进行比对,根据相关性的强弱将异常时间段内与关键指标相关的指标筛选出来。GaussDB当前支持毛刺、持续增长、漂移、周期性等场景的检测算法,可以帮助运维人员迅速定位问题,减轻运维人员的工作量,助其锁定问题的根因。

4. 趋势预测

在日常系统运维及故障处置实践中,负载的变化往往也蕴含着当前系统的亚健康及故障的影响反馈,基于传统的组件指标监控和告警,在故障异常发现的及时性上具有挑战。GaussDB通过建立对实例级关键指标的监控,基于历史数据和时序预测、异常检测等关键算法,对黄金KPI进行指标预测,发现异常信息,进而提醒用户采取措施,避免异常情况造成严重后果。

5. 索引推荐

应用开发者在对SQL进行优化的过程中,索引优化是关键的优化内容,但由于其在性能分析、优化手段等多方面存在复杂分析和实践门槛,给SQL优化带来了挑战。

索引推荐的核心方法是基于原生的词法和语法解析,对查询语句中的字句和谓词进行分析和处理,再结合字段选择度、聚合条件、多表join关系等输出最优的索引建议。GaussDB 提供索引推荐功能,给出索引推荐列表,以及每一个索引的正向和负向SQL的收益,识别当前数据库存在的冗余索引、无用索引,优化数据库查询速度。GaussDB还提供了优化器评估能力,它提供了一个虚拟索引的能力,不需要真实创建索引,通过虚拟索引评估索引推荐的结果是不是合适;通过持续对索引配置进行优化,可以解决用户的负载漂移情况,及时发现索引不优、冗余索引,以便避免故障发生。

6. SQL会话查杀

应用开发的复杂逻辑可能导致人工难以发现的逻辑问题,出现异常SQL,需要有对应手段帮助运维人员快速对异常会话进行查杀限制。GaussDB应用平台提供了一个会话管理的能力,实时会话页面支持会话统计、活跃会话、会话锁分析、会话查杀等功能,帮助运维和管理人员快速掌握实例的会话信息,管理实例会话,并高效定位数据库会话连接相关人工难以发现的逻辑问题。

7. SQL限流和自治限流

我们可以想象一个场景,在数据库正常运行过程中,某一个应用上线了一个新功能,这个新功能引入了一个超级烂SQL,导致数据库逐渐从正常对外服务状态转为资源使用逐渐升高,大量的SQL因为获取不到线程、CPU等资源而执行的速度变慢,最终导致业务异常。如果遇到异常SQL(如不优索引)、SQL并发上升等场景,会对整个数据库的可服务性影响比较大,这时我们就可以通过对SQL精准化限流的方式进行抑制,保证业务能够正常运行。
GaussDB提供的SQL限流提供了以下能力:
  • 全局快慢车道。所谓全局快慢车道,就是定义两个资源池,一个是正常资源池,我们称为快车道,快车道提供大量的资源,正常业务在快车道运行,如果出现交通事故,这里的交通事故就是指异常的SQL业务,我们可以通过页面一键将异常SQL放到慢车道中,慢车道限制了对资源的使用,这样交通事故处理完了,快车道可以继续保持高速运行。

  • 单类SQL精准管控。对于单类SQL,需要从执行时间、IO使用等角度进行精准管控,因为管控这类SQL的资源占用,可以起到紧急限流的效果。

  • 内存熔断。提供内存上下限配置,内存使用超过最大内存上限后禁止新连接接入并kill当前会话,待内存恢复到内存下限后停止kill会话并允许新连接接入。

  • SQL自治限流。提供按照一定的SQL规则,或者CPU、内存等资源使用规则,来进行SQL的自治限流能力,避免对应类别的SQL拖慢整个数据库。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论