mysqlbinlog命令详解记一次有函数的标量子查询导致的查询缓慢
时间:2022-07-23
本文章向大家介绍mysqlbinlog命令详解记一次有函数的标量子查询导致的查询缓慢,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这个专题讲一些日常运维的异常处理
今天讲一个SQL 语句,他有很多标量子查询,其中有的是使用了函数
1. 现象
开发人员反映有条语句非常慢
2. 原因查找
2.1 查看整体执行计划
可以看出语句非常简单,由于 from后的表没有任何where条件
估算的是一行,实际看下了下有9000+的数据,单独查询1s不到
总体执行下来需要10分钟
接下来我们需要知道慢在哪里
2.2 找出慢的地方
这里我们采用笨的方法,注释掉其他的标量子查询只用其中一个
这时我们可以找出DCWIP.GET_WIRETYPE(CONTROL_LOT)这段占用了绝大多数的时间
到这里我们知道可能的原因是该语句循环执行了该函数近10000次导致
这里我们通过查看awr报告也证明了这点
2.3 优化函数
这时我们打开该函数,发现非常简单,里面有2个语句,将参数带进去,我们查看执行计划
可以看到其中有一个全表扫描,数据量3W比左右,执行时间0.03s
这里执行不频繁还好,如执行太多则会造成CPU大量消耗
接下来我们优化这个语句
我们有2种栏位选择 bdg_device 和 bdg_diepart
我们使用group by 查看 where栏位的分布情况
发现diepart 分布比较唯一
select BDG_DEVICE,count(*) from FWASSY.FWCATNS_AS_BONDINGDIAGRAM t group by BDG_DEVICE order by count(*) desc
这时我们在该栏位建索引
create index fwassy.BONDINGDIAGRAM_BDG_DEVICE on fwassy.FWCATNS_AS_BONDINGDIAGRAM(BDG_DEVICE)
之后看执行计划已经走索引了
3. 优化成果:
由于这是一个报表,还有其他语句,但是总体时间从原来的40分钟下降到15分钟
达到预期效果
- rpc框架之 thrift连接池实现
- .NET Core全新路线图
- jboss eap 6.2+ 版本中 加密datasource密码等敏感信息
- WordPress自定义栏目运用实例II:添加文章Meta标签(keywords /description)
- 《Deep Learning with Python》第一章 1.1 人工智能、机器学习和深度学习
- boost::function的用法
- rpc框架之 thrift 学习 1 - 安装 及 hello world
- WordPress自定义栏目运用实例Ⅰ:添加文章来源
- ZooKeeper 笔记(5) ACL(Access Control List)访问控制列表
- 算法:支持重复元素的二分查找
- .NET 异常处理的动作策略(Action Policy)
- 如何在mac本上安装android sdk
- Fityk-曲线拟合工具
- maven: 打包可运行的jar包(java application)及依赖项处理
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Nginx系列:数据压缩
- Ray,面向新兴AI应用的分布式框架
- 60.Vue export default 和 export 的使用方式
- Idea开发maven插件
- redis实战 migrate异常NOAUTH Authentication required.
- linux内存使用情况分析(free + top)
- Centos7 python3安装
- crontab JAVA_HOME not found
- Centos7 源码安装mysql5.6
- mysql登录时报socket找不到终极解决方案
- Grafana将数据库由sqlite3改为mysql
- Python自学成才之路 带有参数的装饰器
- Grafana 将默认的元数据库 sqlite 改为 mysql
- 使用IDEA整合spring4+spring mvc+hibernate
- springmvc中@PathVariable和@RequestParam的区别