mysql问题定位_十、MySQL的SQL优化之定位SQL的问题 - 系统的撸一遍MySQL
找出SQL慢的原因
谈到MySQL不得不说的就是大家都会遇到的性能问题,今天就记录一下SQL优化相关的技巧。
检查MySQL状态
通过检查SQL语句的状态有助于MySQL的优化,首先介绍 show status命令
//检查当前会话的状态
SHOW SESSION STATUS;
//检查全局状态
SHOW GLOBAL STATUS;
这个命令可以查看到MySQL中sql语句的执行状态,具体的如下:
参数
说明
Com_select
SELECT查询次数
Com_insert
INSERT操作次数
Com_update
update更新次数
Com_delete
delete操作次数
innodb_rows_read
innodb_rows_inserted
innodb_rows_updated
innodb_rows_deleted
select查询返回行数
update、insert、delete操作次数
Connections
MySQL累计连接次数
Slow_queries
慢查询次数
Handler_read_key
索引查询数
Handler_read_rnd_next
读取下一行的次数
通过以上的数据,可以检查出MySQL连接数量,决定是否使用链接池,索引利用率。
根据读写状况,可以了解到选择什么样的存储引擎更加合适。
分析SQL的执行计划
相信大家都不陌生多explain命令,用于检查SQL语句的执行计划,在索引优化的时候必不可少。
每次项目前都会开着SlowLog去压测,然后把满查询通过explain去分析。
首先介绍一下这个命令的常用用法:
//检查SQL语句执行计划
explain select * from user where username = 'fuckphp';
//查询MySQL优化后但语句执行计划
explain extended select * from user where username = 'fuckphp';
//查询MySQL分区信息的执行计划
explain partitions select * from user where username = 'fuckphp';
字段
描述
id
每个SELECT分配的ID
select_type
类型
说明
SIMPLE
简单表,不包含字查询或联表查询
PRIMARY
主查询,最外层的查询
UNION
union查询中后面的查询语句
SUBQUERY
字查询的第一个语句
table
表名
type
类型
说明
ALL
全表扫描
index
全索引扫描
range
索引范围扫描(大于小于之类的查询)
ref
非唯一或主键索引的等值查询
eq_ref
使用唯一或主键的查询
const
const:只有一个匹配行使用了唯一或主键查询
possible_keys
可能用到的索引
key
查询用到的索引
key_len
索引长度
rows
检索行数
Extra
补充信息
ref
与key一同检索的字段或常数
通过show profile分析SQL
除了explain还有show profile这个神器,来帮我们分析SQL语句的执行过程。
//查看是否支持
show @@have_profiling;
//在会话中开启profile
set profiling=1;
//查询当前会话执行过的SQL 包含queryid 查询时间、查询语句
show profiles;
//根据queryid查询执行过程中的时间
show profile for query queryid;
//查询全部执行信息
show profile all for query queryid;
//查询source、cpu、block io、context、page faults等信息 更多查看help profile;
show profile cpu for query queryid;
这个神器会在未来版本中被MySQL废除掉,已经不建议使用,官方建议在performance_schema的PROFILING表中进行查询。
SQL的追踪
MySQL5.6以后,可以使用strace命令对SQL语句进行追踪。
//开启strace
SET OPTIMIZER_TRACE="enabled=on";
//设置strace 输出格式为json
SET END_MARKERS_IN_JSON=on;
//查询SQL信息
select * from information_schema.OPTIMIZER_TRACE\G
在这个结果中可以查看到MySQL对条件的优化,恒等条件的优化等信息,便于查询出性能瓶颈。
mysql问题定位_十、MySQL的SQL优化之定位SQL的问题 - 系统的撸一遍MySQL相关推荐
- 七、MySQL中的字符集 - 系统的撸一遍MySQL
2019独角兽企业重金招聘Python工程师标准>>> 什么是字符集? 计算中的字符文字集合(每个自负文字分配一个对应的数字),将字符集中的文字符号进行编码以便于计算机识别处理. 字 ...
- 多传感器融合定位十四-基于图优化的定位方法
多传感器融合定位十四-基于图优化的定位方法 1. 基于图优化的定位简介 1.1 核心思路 1.2 定位流程 2. 边缘化原理及应用 2.1 边缘化原理 2.2 从滤波角度理解边缘化 3. 基于kitt ...
- SQL优化工具分享-SQL Tuning Expert Pro for Oracle Trial
做开发离不开对于数据库的接触,也离不开对SQL的接触,一个优质的SQL,可以让系统性能提升到质的飞跃,一个糟糕的SQL,可以让系统奔溃.所以对于我们开发人员来说,很需要一个SQL性能优化工具,在这种情 ...
- SQL优化之基于SQL特征的改写
SQL优化之基于SQL特征的改写 第一章 技术人生系列 · 我和数据中心的故事(第九期)SQL优化之基于SQL特征的改写 中亦安图 | 2016-03-21 22:04 前言 今天老K继续与大家分享第 ...
- 阿里M8级铁子整理出SQL手册:收获不止SQL优化,抓住SQL的本质
有人就有江湖,有江湖就有IT系统,有IT系统就有数据库,有数据库就有SQL,SQL应用可一字概括: "广"".加之其简单易学,SOL实现也可一字概括:"乐&qu ...
- 阿里 M8 级大神整理出 SQL 手册:收获不止 SQL 优化,抓住 SQL 的本质
什么是 SQL? 结构化查询语言(Structured Query Language)简称 SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库 ...
- 阿里M8级大神整理出SQL手册:收获不止SQL优化,抓住SQL的本质
有人就有江湖,有江湖就有IT系统,有IT系统就有数据库,有数据库就有SQL,SQL应用可一字概括: "广"".加之其简单易学,SOL实现也可一字概括:"乐&qu ...
- 【中亦安图】SQL优化之基于SQL特征的改写(9)
第一章 技术人生系列 · 我和数据中心的故事(第九期)SQL优化之基于SQL特征的改写 中亦安图 | 2016-03-21 22:04 前言 今天老K继续与大家分享第九期. 周末老K宅在家观战了两局精 ...
- mysql 慢sql 十几秒_sql优化之慢sql耗时排查
sql 语句性能分析 1.看 sql 语句执行时间 2.看 sql 的执行计划 3.查看 sql 的执行中各个环节耗时时间 4.查看mysql的执行进程,处理锁表的情况,命令 show PROCESS ...
最新文章
- 《Head First 设计模式》ch.3 装饰(Decorator)模式
- 口语学习Day7:今天聊聊美国超市的物价
- Lang.String
- Mysql-索引的基础和类型
- Android 自定义View实现QQ运动积分抽奖转盘
- yum第三方安装-软件包没签名及更新错误
- faster-rcnn tensorflow windows python 训练自己数据
- koa2-cors应答跨域请求实现
- HTTP协议(学习笔记)
- 的ppt_PPT丨清新淡雅年终总结PPT模板
- Linux Shell编程(3)——运行shell脚本
- android外接usb摄像头demo_手机通过USB连接打印机使用教程,手机连接打印机系列之二...
- 文字转语音怎么在线生成MP3格式的音频?
- weka下载安装以及源码运行
- 在Excel中批量生成复选框,也支持批量打勾批量删除,#excel插件
- 气功修炼常识之:调息、丹田呼吸、脐呼吸、体呼吸
- pdf编辑器免安装版_墙裂推荐!功能强大的PDF编辑器最新免安装版!
- [转载]雅礼中学2012届高三年级第三次阶段考试试卷
- 学习笔记:LM2662开关电容器电压转换器
- 构造方法以及构造方法的重载
热门文章
- C#中修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
- C++多线程编程(入门实例)
- object 'libproxychains.so.3' from LD_PRELOAD cannot be preloaded
- php怎么做免登录,php---一周内免登录
- 依赖编译_开源项目的编译优化实践
- ios 自己服务器 苹果支付_iOS应用内支付(IAP)服务端端校验详解
- Android开发之添加QQ群的方法(官方代码)
- java 优化 寄存器_JVM性能优化系列-(6) 晚期编译优化
- SVN:This client is too old to work with working copy…解决方法
- Reachability,ios检测网络使用环境