MySQL慢查询风险指数模型设计(2)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL慢查询风险指数模型设计

评分模型可以简单描述为:


score=sum(评分项*权重)

选取评分项边界

评分模型的评分项确认之后,为了防止单项分数过高,需要对评分项进行百分化,并且所有权重总和为 100 ,根据评分项计分模型可以算出符合增长曲线的分数,这样评分模型计算出来的总分数为 100 ,故需要确认每项的分数边界、权重、计分模型。只有各项的边界、权重、计分模型确认之后,给定一个慢查询,评分模型才能计算出合理的分数。评分项的边界可以根据当前历史数据设置。计分模型和权重可以首先进行假设,测试完成之后如果不符合预期则修改权重、计分模型,并重复测试-修改过程,直至测试结果符合预期。

边界选取标准

根据当前慢查询的历时记录,由于极值数据可能会存在干扰,导致真实值失真,故需要去除最高部分 5% 的异常值,将 95 分位的值作为每个评分项的最高边界。如果单项值超过最高边界的值评分项,单项分数都将被设置为最大分数。

查询时间:

95 分位的 sql 慢查询耗时约在 60s 左右

锁等待时间

95分位的慢查询锁等待时间约为0.00629s

扫描行数

95分位的慢查询扫描行数约为1785w行

查询次数

95分位的慢查询次数约为180个

发送流量

由于流量字段缺失,暂时不计入评分系统。

计分项边界值

计分模型

每一项计分项的边界得以确认,值越大分数越高。但是存在以下情况:

某些评分项的值对系统的影响程度并不是成正比例,超过某个临界点,对系统的压力会迅速增长。

比如:查询次数,一条超时为1s的sql,查询1次、查询10次、查询100次,对系统的压力是不一样的,量变会引发质变。
设计有一下四种计分模型:

计分代码如下:

/**
 * @Description: 计算单项得分,分数介于最小分数和最大分数之间,可选的计分模型有:类正弦模型、正弦模型、指数模型、正比例模型
 * @Param val: 单项当前值
 * @Param minVal: 单项最小值
 * @Param maxVal: 单项最大值
 * @Param minScore: 单项最小得分
 * @Param maxScore: 单项最大得分
 * @Param calWay: 计分模型方式
 * @Return float64: 单项得分
 */
func calSingleScore(val, minVal, maxVal, minScore, maxScore float64, calWay string) float64 {
   if maxVal == 0 { // 如果值为0则返回0
      return 0
   }
   if val >= maxVal { // 如果值超过上边界,则设置为最大分数
      return maxScore
   }
   if val <= minVal { // 如果值低于下边界,则设置为最小分数
      return minScore
   }
   var scoreRatio float64
   switch calWay {
   case "likeSin": // 类正弦曲线
      // Y = a + b·X + c·X2 + d·X3 + e·X4 + f·X5
      b := 0.0547372760360247
      c := -0.0231045458864445
      d := 0.00455283203705563
      e := -0.000281663561505204
      f := 5.57101673606083e-06
      // 使用20个函数绘制点位拟合出来的
      ratio := (val - minVal) / (maxVal - minVal) * 20
      scoreRatio = b*ratio + c*(ratio*ratio) + d*(ratio*ratio*ratio) +
         e*(ratio*ratio*ratio*ratio) + f*(ratio*ratio*ratio*ratio*ratio)
   case "sin": // 正弦曲线
      ratio := (val - minVal) / (maxVal - minVal)
      scoreRatio = math.Sin(math.Pi / 2 * ratio)
   case "exponent": // 指数曲线
      ratio := (val - minVal) / (maxVal - minVal)
      a := math.Log2(maxScore - minScore)
      scoreRatio = math.Pow(2, a*ratio)
      return scoreRatio
   default: // 默认是正比例
      scoreRatio = (val - minVal) / (maxVal - minVal)
   }
   return scoreRatio * (maxScore - minScore)
}


模型曲线如下:















































         
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
4月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
5月前
|
SQL 缓存 关系型数据库
MySQL 慢查询是怎样优化的
本文深入解析了MySQL查询速度变慢的原因及优化策略,涵盖查询缓存、执行流程、SQL优化、执行计划分析(如EXPLAIN)、查询状态查看等内容,帮助开发者快速定位并解决慢查询问题。
245 0
|
5月前
|
SQL 监控 关系型数据库
MySQL慢查询攻略
本文详细介绍了MySQL慢查询优化的全流程,从定位性能瓶颈到具体优化策略,再到高级调优与预防监控。首先通过开启慢查询日志和分析工具(如pt-query-digest)找到问题SQL,接着从索引优化(如最左前缀原则、覆盖索引)、SQL语句重构(如避免全表扫描)及EXPLAIN执行计划解析等方面进行核心优化。随后深入参数调优和架构升级,如调整innodb_buffer_pool_size、实施分库分表等。最后,通过实时监控工具(如PMM、Prometheus+Grafana)建立长效机制,并以电商订单查询为例,展示优化前后性能大幅提升的实战效果。
563 0
|
SQL 关系型数据库 MySQL
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
MySQL慢查询优化、索引优化,是必知必备,大厂面试高频,本文深入详解,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
|
9月前
|
存储 关系型数据库 MySQL
MySQL进阶突击系列(09)数据磁盘存储模型 | 一行数据怎么存?
文中详细介绍了MySQL数据库中一行数据在磁盘上的存储机制,包括表空间、段、区、页和行的具体结构,以及如何设计和优化行数据存储以提高性能。
|
10月前
|
关系型数据库 MySQL 数据库
mysql慢查询每日汇报与分析
通过启用慢查询日志、提取和分析慢查询日志,可以有效识别和优化数据库中的性能瓶颈。结合适当的自动化工具和优化措施,可以显著提高MySQL数据库的性能和稳定性。希望本文的详解和示例能够为数据库管理人员提供有价值的参考,帮助实现高效的数据库管理。
262 11
|
11月前
|
缓存 关系型数据库 MySQL
MySQL 索引优化以及慢查询优化
通过本文的介绍,希望您能够深入理解MySQL索引优化和慢查询优化的方法,并在实际应用中灵活运用这些技术,提升数据库的整体性能。
293 18
|
SQL 关系型数据库 MySQL
MySQL慢查询优化、索引优化、以及表等优化详解
本文详细介绍了MySQL优化方案,包括索引优化、SQL慢查询优化和数据库表优化,帮助提升数据库性能。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
MySQL慢查询优化、索引优化、以及表等优化详解
|
11月前
|
缓存 关系型数据库 MySQL
MySQL 索引优化以及慢查询优化
通过本文的介绍,希望您能够深入理解MySQL索引优化和慢查询优化的方法,并在实际应用中灵活运用这些技术,提升数据库的整体性能。
808 7
|
11月前
|
缓存 关系型数据库 MySQL
MySQL 索引优化与慢查询优化:原理与实践
通过本文的介绍,希望您能够深入理解MySQL索引优化与慢查询优化的原理和实践方法,并在实际项目中灵活运用这些技术,提升数据库的整体性能。
606 5

推荐镜像

更多
下一篇
oss云网关配置