上云无忧 > 文档中心 > 百度智能云云数据库RDS 慢查询报警处理方法
云数据库 RDS
百度智能云云数据库RDS 慢查询报警处理方法

文档简介:
数据库性能的优劣,直接关系到系统执行的效率和稳定性,如果出现性能问题不仅会损害公司形象,也可能会造成公司资金方面的损失。慢SQL是影响数据库性能很重要的一个方面。对于海量数据,劣质SQL和优质SQL之间的速度差别可能达到上百倍,解决慢SQL对解决数据库性能问题会起到事半功倍的效果。 for MySQL 版 for SQL Server 版 for PostgreSQL 版
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

背景

数据库性能的优劣,直接关系到系统执行的效率和稳定性,如果出现性能问题不仅会损害公司形象,也可能会造成公司资金方面的损失。慢SQL是影响数据库性能很重要的一个方面。对于海量数据,劣质SQL和优质SQL之间的速度差别可能达到上百倍,解决慢SQL对解决数据库性能问题会起到事半功倍的效果。

当数据库出现性能问题时,大多数时候跟慢SQL有关。慢SQL问题比较严重时,通常会有如下一些表现:

  1. 数据库响应变慢,SQL执行耗时变长,最终业务请求超时
  2. 数据库读和写的QPS降低
  3. 系统资源CPU打满等现象

处理过程

问题发现

慢查询问题的发现渠道有如下几种:

  1. 配置BCM监控,当触发慢查询报警的阈值时,会自动发送报警信息
  2. 查看RDS监控趋势图,观察慢查询的曲线,如下图例

  3. 业务访问数据库响应变慢,也可能是因为慢查询

问题定位

  1. 第一步:确认是否存在预期中的长耗时SQL

    登录及查看命令数据库命令:

    mysql -h 实例ip -P端口 -u用户 -p密码 -e " SHOW PROCESSLIST;" |grep -ivw sleep

    举例:得到结果如下

    image.png

  2. 第二步:分析

    通过当前 processlist 展示结果,可以看到有6个长耗时的慢SQL,导致了慢查询报警

问题解决

首先需要确认这些慢查询是否可以终止,如果可以终止,登录RDS执行KILL命令: KILL threadID; #比如 kill 10276 ;,遍历 kill 6个sessionid

这时客户端会收到报错信息如下,这是符合预期的: ERROR 2006 (HY000): MySQL server has gone away

如上例,观察监控趋势图:慢查询个数减少并逐步消失

后续处理

  1. 直接对kill线上慢查询,只是对线上正在出现问题的紧急处理
  2. 如果是存量慢SQL,建议尽快对相关SQL优化处理(如加索引、优化SQL访问方式等)
  3. 如果是新增慢SQL,为避免对现有服务造成影响,建议将服务暂时下线,待优化后再上线

参考资料

监控报警操作指南

MySQL慢日志最佳实践

相似文档
  • 慢日志明细: 历史慢SQL实时统计,方便数据库管理员对慢查询语句进行分析,快速定位系统正在进行的性能问题。 错误日志明细: 开启和关闭MySQL服务的时间和服务运行中异常情况的统计,用于MySQL服务出现异常时,及时查找原因。 for MySQL 版
  • 数据容灾对于每个存储系统来说,都是不可缺少的,数据库也不例外。对于数据可用性有强需求的业务场景如金融、游戏业务等场景尤其如此。数据库容灾主要通过多副本架构来保证,同时可以通过定时备份数据、主从同步数据方法来保障数据高可用。在复杂网络情况,用户往往还会需要能有跨机房、跨可用区、跨地域的数据容灾能力。 for MySQL 版 for SQL Server 版 for PostgreSQL 版
  • 在数据库的使用过程中,随着流量的不断增长,需要对RDS实例进行扩容以满足高并发的性能要求,扩容方案一般情况下分为如下两类: 纵向扩展(Scale-Up)方案:升级RDS实例的套餐规格,通过增加CPU和内存的配置,提升数据库性能。 for MySQL 版 for SQL Server 版 for PostgreSQL 版
  • 在数据库的使用过程中,如果遇到误操作导致的数据删除、数据篡改等问题,可以通过RDS克隆实例功能实现数据修复。克隆实例的数据恢复方式分为如下两种: for MySQL 版 for SQL Server 版 for PostgreSQL 版
  • 读写分离原则: 事务、写请求或同一个session写请求之后一段时间(默认200ms)内的读,会发往主库。 读写分离不保证非事务读的一致性,业务上有一致性需求的查询,请封装到事务。 对业务要求: 业务有连接探活或超时机制。超时时间为:前端超时时间 < 代理超时时间 < MySQL超时时间。 业务端有重试机制。 for MySQL 版 for SQL Server 版 for PostgreSQL 版
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部