慢 SQL 跟进页面:
2.2.3 慢 SQL 风险评估模型-慢 SQL 分
当业务线存在较多慢 SQL 时,如何精准且合理的分析出哪些慢 SQL 风险最高?
我们基于关系型数据库的 Quert_time,Lock_time,Rows_sent,Rows_affected,Bytes_sent 等维度建立客增的慢 SQL 风险评估模型,给每条慢 SQL & 每个数据库打分,按照慢 SQL 分来排序,分数最高的慢 SQL 风险最高。
慢 SQL 模型如下:
2.3 慢 SQL-CI 流水线准入/准出卡口建设
基于 ByteCycle(ByteCycle 字节统一能效中台)开发慢 SQL 原子节点,提供慢 SQL 相关的卡点能力。bytecycle 基于 psm 维度来构建持续集成流水线,通过提供慢 SQL 原子节点,可以方便用户插拔式使用。CI 卡点能够提供大家对慢 SQL 的重视程度以及提高慢 SQL 的改进效率。
2.4 慢 SQL 监控&告警订阅
目前提供慢 SQL 月报,每日慢 SQL 相关问题修复提醒,sqll kill lark 告警卡片等维度的信息展示和触发。相关样式如下:
- 慢 SQL 月报
- 每日慢 SQL 问题修复提醒
- 配置 db 慢查询阈值后,如果超过该阈值则该语句会被 db 自动 kill,订阅后会自动将获取到的 kill 信息发送到对应群中
3. Code 方案
RDS 元信息获取实现方案
数据表设计
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 查询详情落库
数据表
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 类:
-
优化 shcema
-
优化索引,尽可能构建三星索引
-
优化查询,合理的设计查询
相关细则如下所示:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://i-blog.csdnimg.cn/blog_migrate/b69732e4dcf7f27a9e28b9195f479f3a.jpeg)
作者2013年从java开发,转做Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。
参与过不少面试,也当面试官 面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!
我整理了一份阿里P7级别的最系统的Android开发主流技术,特别适合有3-5年以上经验的小伙伴深入学习提升。
主要包括阿里,以及字节跳动,腾讯,华为,小米,等一线互联网公司主流架构技术。如果你想深入系统学习Android开发,成为一名合格的高级工程师,可以收藏一下这些Android进阶技术选型
我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
Java语言与原理;
大厂,小厂。Android面试先看你熟不熟悉Java语言
高级UI与自定义view;
自定义view,Android开发的基本功。
性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。
NDK开发;
未来的方向,高薪必会。
前沿技术;
组件化,热升级,热修复,框架设计
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,CodeChina上可见;
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
不出半年,你就能看出变化!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
6780)]
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,CodeChina上可见;
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
不出半年,你就能看出变化!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!