mysql profiling sending data_Mysql一次Sending data占用大量时间的深入分析优化案例
用户反馈系统慢,但是没描述具体是哪里慢,登录到其mysql数据库中,通过slow.log分析查看,其中有个sql出现的频率较多,而且耗时较长,先拿这个sql分析一下:
SELECT s.userid,s.status,MAX(s.lastaccess) AS lastaccess FROM sessions s WHERE s.status=0 GROUP BY s.userid,s.status;
初步看到的信息:返回22条数据,但是Rows_examined几乎是整张表的条数,这里心里就有个眉目了。
如何优化呢,我们大概有个套路:
1. 采用explain对语句进行分析
explain SELECT s.userid,s.status,MAX(s.lastaccess) AS lastaccess FROM sessions s WHERE s.status=0 GROUP BY s.userid,s.status;
我们看到,key走的是sessions_1的索引,其实这里我们可以看出端倪,但是为了把sql优化的方法讲出来,咱们继续。
查看表的索引
查看表的状态
Avg_row_length不大(对于返回数据时,这个值可以供参考分析)
查看表的栏位
(没啥大的字段,与上面联合查询分析)
2. 使用profile分析sql在哪里消耗的时间长
(很好的一个工具,可惜5.7以后profile信息将逐渐被废弃,mysql推荐使用performance schema)
set profiling=on;(或者=1)
几乎所有的时间都消耗在Sending data上。
这里“Sending data”并不是单纯的发送数据,而是包括“收集 + 发送 数据”。那么排除发送数据的大小,基本确定,在收集数据上花的时间较长
3. 优化方案
根据sql,它要查询相同userid,status下的最近的登录记录,distinct by userid,status=0才22条,虽然用了索引,但是还是查询收集1千700万多条数据,有效发送数据才22条,所以这个不是效率最高索引,故创建复合二叉树索引(userid,status,lastaccess)
4. 查看优化后的效果
效率杠杠的
5. 总结
咱们大致说一下仅仅关于Mysql的一个优化思路:
1. 检查slow.log,通过mysqldumpslow 分析一下排名sql
2. 分析执行计划,查看表的状态,索引等信息
3. 分析执行过程,与配置文件信息一同查看分析
mysql profiling sending data_Mysql一次Sending data占用大量时间的深入分析优化案例相关推荐
- sending data mysql_MySQL查询中Sending data占用大量时间的问题处理
原SQL执行计划: EXPLAIN SELECT tm.id, tm.to_no , tm.source_website_id , tm.warehouse_name , tm.target_webs ...
- mysql 1261 load data_Mysql错误积累001-load data导入文件数据出现1290错误
错误出现情景 在cmd中使用mysql命令,学生信息表添加数据.使用load data方式简单批量导入数据. 准备好文本数据: xueshengxinxi.txt 文件 数据之间以tab键进行分割 ...
- mysql 远程load data_mysql导入数据load data infile用法整理
有时候我们需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用MySql Load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间. ...
- mysql 子查询索引_mysql select中子查询中使用强制索引的优化案例
1,朋友找我帮忙看下比较慢的sql语句 SELECT pg.product_goods_id, pg.product_id, pg.pdt_code, pg.pdt_name, pg.brand_na ...
- fastboot 刷system.img 提示 sending 'system' (*KB)... FAILED (remote: data too large)
华为G6-C00卡刷提示OEMSBL错误,只能线刷 ,但是官方找不到线刷img镜像,无奈 网上下了个可以线刷的工具套件 流氓ROM . 使用HuaweiUpdateExtractor(工具百度)把官方 ...
- Linux下mysql数据库从服务器A只迁移DATA文件夹到服务器B
Linux下mysql数据库从服务器A只迁移DATA文件夹到服务器B 操作流程 获取数据 迁移数据 运行新的数据库 后记 操作流程 前言:近期做了一个项目,由于mysql数据库中的数据比较庞大,考虑转 ...
- mysql快速导入亿级数据----load data
mysql快速导入亿级数据 --- load data load data方法 实战:导入一亿数据 对比 load data方法 注意 csv文件路径问题 如果出现如上错误,需要将csv文件放到上述路 ...
- 面试mysql慢查询_剑指Offer面试题:如何定位并优化慢查询sql
1.根据慢日志定位慢查询sql 使用以下命令查看相关系统变量属性: show variables like '%query%'; 主要看这三个属性: long_query_time : 10.0000 ...
- mysql中获取一天、一周、一月时间数据的各种sql语句写法
来源:http://www.jb51.net/article/50505.htm 今天抽时间整理了一篇mysql中与天.周.月有关的时间数据的sql语句的各种写法,部分是收集资料,全部手工整理,自己学 ...
- MySQL第12天:MySQL索引优化分析之性能优化案例实践
MySQL索引优化分析之性能优化案例实践 执行计划中各select_type含义可以看:MySQL第11天:MySQL索引优化分析之性能分析 https://weibo01.blog.csdn.net ...
最新文章
- Base64 算法原理,以及编码、解码【加密、解密】 介绍
- 使用Java流查询数据库
- 一个显示器分两个屏幕_桌面改造计划2.0:一个显示器不够那就两个,桌面好物分享...
- Scala学习笔记02:数据类型、常量与变量
- cacti监控 磁盘I/O
- 在哈佛的一场闭门会上,专家说全球各国都应设置“人工智能部长”
- 《jQuery Mobile快速入门》—— 1.6 可主题化的设计
- css模糊遮罩效果_CSS 半透明遮罩层
- CAD快速看图软件中孔轴投影教程
- 有哪些免费的软件资源分享网站,软件资源网站大全导航
- 回溯法解决最大团问题
- 设置linux服务器时间自动同步
- leetcode 799. 香槟塔 (Champagne Tower)
- Windows Metro Style颜色色值表
- SMS短信的编码规则
- 管路流体仿真matlab,MathWorks 在 Simscape 中新增建模和仿真流体系统功能
- GEE学习笔记(基础篇)更新中
- 微信吸粉实战二:腾讯新闻
- SolidWorks2016软件,SW2010-2016.Activator.GUI.SSQ激活闪退解决办法:
- CTFHub-web前置技能-请求方式、302跳转、cookie、基础认证、响应包源代码