字节客增慢 SQL 治理体系(2)

慢 SQL 阈值配置自动化管理是解决业务关联的数据库全部配置了慢 SQL 阈值信息。该部分通过线上定时巡检来实现,流程如下:

8b1561930e57780b8c07e53694996af5.png

2.2.2 Mars-慢 SQL 治理平台

在客增质量工作台搭建 Mars-客增慢 SQL 治理 Web 页面,展示相关业务的慢 SQL 现状以及排期跟进修复情况,目的是让业务同学更清晰快速了解当前业务相关,提供问题修复效率,方案如下:

a3929b0b40ac74840424d0b0c9ba2f7d.png

慢 SQL 跟进页面:

db6ed3895107b88171f372cd9769b9af.png

2.2.3 慢 SQL 风险评估模型-慢 SQL 分

当业务线存在较多慢 SQL 时,如何精准且合理的分析出哪些慢 SQL 风险最高?

我们基于关系型数据库的 Quert_time,Lock_time,Rows_sent,Rows_affected,Bytes_sent 等维度建立客增的慢 SQL 风险评估模型,给每条慢 SQL & 每个数据库打分,按照慢 SQL 分来排序,分数最高的慢 SQL 风险最高。

慢 SQL 模型如下:

10a897592ea325b32ce894d12f53bcb1.png

2.3 慢 SQL-CI 流水线准入/准出卡口建设

基于 ByteCycle(ByteCycle 字节统一能效中台)开发慢 SQL 原子节点,提供慢 SQL 相关的卡点能力。bytecycle 基于 psm 维度来构建持续集成流水线,通过提供慢 SQL 原子节点,可以方便用户插拔式使用。CI 卡点能够提供大家对慢 SQL 的重视程度以及提高慢 SQL 的改进效率。

fea3e4888a7541e0fcbe8977482a078f.png 89cad0ca1d4ea867c2bba1e1e2310fc1.png

2.4 慢 SQL 监控&告警订阅

目前提供慢 SQL 月报,每日慢 SQL 相关问题修复提醒,sqll kill lark 告警卡片等维度的信息展示和触发。相关样式如下:

  • 慢 SQL 月报

d7368538afc6108b68237bb2028c0407.png

  • 每日慢 SQL 问题修复提醒

dee44153b2c5a4e92be8273f78c9f932.png

  • 配置 db 慢查询阈值后,如果超过该阈值则该语句会被 db 自动 kill,订阅后会自动将获取到的 kill 信息发送到对应群中

547b7416d4e674af3d478b57821f3b15.png

3. Code 方案

RDS 元信息获取实现方案

61320f221d3beb54e8353122032563b0.png

数据表设计

create table cg_rds_external

(

id                int unsigned auto_increment primary key comment ‘id’,

db_name           varchar(100) default ‘’                null comment ‘db名字’,

owners            varchar(100) default ‘’                not null comment ‘db owners’,

region            varchar(100) default ‘’                not null comment ‘db部署的region’,

proxy_port_master varchar(100) default ‘’                not null comment ‘master节点的port’,

proxy_port_slave  varchar(100) default ‘’                not null comment ‘slave节点的port’,

sync_time         datetime     default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment ‘数据同步时间’

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 comment ‘rds db额外信息’;

create table cg_rds_slow_query_config

(

id             int unsigned auto_increment primary key comment ‘id’,

config_id      int                                    null comment ‘慢查询配置id’,

db_name        varchar(255) default ‘’                null comment ‘db名字’,

region         varchar(100) default ‘’                not null comment ‘db部署的region’,

port           varchar(100) default ‘’                not null comment ‘规则中的端口’,

db_role        varchar(100) default ‘’                not null comment ‘master or slave’,

max_query_time int                                    null comment ‘超时阈值,单位是秒’,

creator        varchar(100) default ‘’                null comment ‘规则创建人’,

create_time    varchar(100) default ‘’                null comment ‘规则创建时间’,

sync_time      datetime     default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment ‘数据同步时间’

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  comment ‘rds慢查询规则配置信息’;

create table cg_rds_db_alarm_config

(

id        int unsigned auto_increment primary key comment ‘id’,

region    varchar(100) default ‘’                not null comment ‘db部署的region’,

alarm_id  int                                    null comment ‘alarm 规则id’,

db_name   varchar(255) default ‘’                null comment ‘db名字’,

type      varchar(100) default ‘’                not null comment ‘alarm type,例如lark’,

group_id  varchar(100) default ‘’                not null comment ‘lark id’,

create_time   varchar(100) default ‘’                not null comment ‘规则创建/更新时间’,

owner     varchar(100) default ‘’                not null comment ‘alarm创建人’,

sync_time datetime     default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment ‘数据同步时间’

)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  comment ‘rds alarm配置表’;

慢 SQL 查询详情落库

fe466e7a21b4ce6f4cd0b285ee71ccf5.png

数据表

create table cg_slow_query_detail_info

(

id              int unsigned auto_increment primary key comment ‘id’,

db_name         varchar(255) default ‘’                null comment ‘db 名’,

db_region       varchar(255) default ‘’                null comment ‘db的region’,

fingerprint_md5 varchar(255) default ‘’                null comment ‘慢sql标识’,

begin_time      datetime     DEFAULT CURRENT_TIMESTAMP null comment ‘慢sql的开始执行时间’,

max_run_time    varchar(255) default ‘’                null comment ‘sql执行的最大耗时’,

run_count       int          default 0                 null comment ‘sql执行次数’,

psm_name        varchar(255) default ‘’                null comment ‘发起sql的psm’,

avg_query_time  varchar(255) default ‘’                null comment ‘平均耗时’,

rds_address     varchar(255) default ‘’                null comment ‘执行sql的rds主机ip:port’,

psm_host        varchar(255) default ‘’                null comment ‘发起查询请求的主机ip’,

sync_time       datetime                               NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘数据同步时间’

) ENGINE = InnoDB

DEFAULT CHARSET = utf8mb4 comment ‘客增慢sql记录’;

慢 SQL 被 kill 的详情信息获取方案
数据表

create table cg_kill_sql_detail_info

(

id            int unsigned auto_increment primary key comment ‘id’,

db_name       varchar(255)  default ‘’                null comment ‘db 名’,

db_region     varchar(255)  default ‘’                null comment ‘db的region’,

db_role       varchar(255)  default ‘’                null comment ‘db节点: master slave’,

begin_time    datetime      DEFAULT CURRENT_TIMESTAMP null comment ‘被kill的sql 执行开始时间’,

psm_name      varchar(255)  default ‘’                null comment ‘发起sql的psm’,

sql_detail    varchar(2000) default ‘’                null comment ‘sql详情’,

db_table_name varchar(255)  default ‘’                null comment ‘该sql的表名,如果多个表,只取第一个’,

sync_time     datetime                                NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘数据同步时间’

) ENGINE = InnoDB

DEFAULT CHARSET = utf8mb4 comment ‘rds被kill的慢sql数据统计’;

Metrics 监控规则

rds 报警订阅的监控只能发现 rds 上执行的 SQL 数据,不能实时发现慢接口。故推荐使用 dbatman 的 metrics 打点来完成慢 SQL 的监控告警工作。

$key = “max:toutiao.ttds.dbatman.latency.max{db=sales_manage,port=,host=,dc=*}”

v a l u e   =   m a x ( q ( value = max(q( value = max(q(key, “3m”, “1m”))/1000

warn = $value>50

runEvery=1

4. 慢 SQL 治理最佳实践与标准制定

慢 SQL 治理优化基本可分为如下 3 类:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

这里我特地整理了一份《Android开发核心知识点笔记》,里面就包含了自定义View相关的内容

除了这份笔记,还给大家分享 Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。

分享上面这些资源,希望可以帮助到大家提升进阶,如果你觉得还算有用的话,不妨把它们推荐给你的朋友~

喜欢本文的话,给我点个小赞、评论区留言或者转发支持一下呗~

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

Android学习PDF+架构视频+面试文档+源码笔记**,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。

[外链图片转存中…(img-9rzqkK0X-1713581683195)]

分享上面这些资源,希望可以帮助到大家提升进阶,如果你觉得还算有用的话,不妨把它们推荐给你的朋友~

喜欢本文的话,给我点个小赞、评论区留言或者转发支持一下呗~

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 19
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值