SQL优化之慢查询和explain以及性能分析
性能优化的思路
首先需要使用慢查询功能,去获取所有查询时间比较长的SQL语句
使用explain去查看该sql的执行计划
使用show profile去查看该sql执行时的性能问题
MySQL性能优化之慢查询
数据库的查询速度是影响项目性能的重要因素,除了添加缓存中间件外,对于查询本身的优化带来的性能也是不容小觑
要想优化查询SQL,就应该先找打需要被优化的SQL语句,MySQL提供了这么一个功能可以帮助我们快速定位带查询慢的SQL
MySQL的慢查询日志功能:默认关闭,需要手动开启
查看是否开启慢查询日志功能:show variables like '%slow_query%';


slow_query_log :是否开启慢查询日志,ON 为开启,OFF 为关闭,如果为关闭可以开启
slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件 host_-slow.log
下面我们开启慢查询日志功能:
长期有效(修改 :/etc/my.cnf配置文件如下 记得重启mysql生效)
[mysqld]
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
临时开启,重启后失效:(测试用)
set global slow_query_log = ON; (开启)
set global long_query_time = 1; (便于测试,设置阀值,后面我改的是配置文件为0.1)

我们显示查询慢查询的阀值,也就是sql执行时间超过该值就会被记录,单位秒,我们可以看到是10秒
我们已经开启了慢查询日志功能,并设置相应的阀值,下面我们来测试一下:

可以看到已经生效了,但是中途其实还是出了点小问题,比如在设置阀值的时候失效了,没有设置上,在比如慢查询日志没有写入文件;
上面的日志重要部分解析:
Query_time:这条sql执行的时间
Lock_time:在Mysql服务器阶段等待表锁时间
Rows_sent:查询返回的行数
Rows_examined:查询检查的行数,越长查询的时间越长
最后一排就是我们查询的sql语句信息
MySQL性能优化之查看执行计划:explain
(若有侵权,请联系删除)
在上面的慢查询中,我们已经将查询时间超过阀值的sql语句过滤了出来,下面我们来具体分析分析是哪里出了问题
MySQL性能分析语句show profile
Query Profile是MySQL自带的一种Query诊断分析工具,可以完整的显示一条sql执行的各方面的详细信息,默认关闭;
查看是否开启Profile功能:
select @@profiling;
show variables like '%profil%';

可以看到 profiling为 OFF,profiling为0,表示关闭状态,下面我们将其开启:set profiling=1; (1:开 / 0:关)

再次查看是否打开性能分析工具:select@@profiling; (之前为0)

下面我们开始准备测试:

第一个被圈中的是我们要执行的测试sql语句
第二个被圈中的是:以列表形式显示最近发送到服务器上执行的语句的资源使用情况
第三个被圈中的是:我们刚刚发送到服务器上执行的语句
下面我们就来看看这条语句的一些信息: show profile for query 4;
这个4就是上面 show profiles中的Query_ID 我们的测试sql为4

见名知意,对于这条简单的sql而言,可见在刚开始建立连接时和最后返回数据时,所占的时间比列多很大
所以,有连接池和只返回我们需要的数据即可这么些说法;
合理利用慢查询日志、explain执行计划查询、show profile查看SQL执行时的资源使用情况。对需要优化的语句进行针对性的优化
SQL优化之慢查询和explain以及性能分析的更多相关文章
- sql 优化 链接提示 查询提示 标提示
SQL Server的查询优化器在select查询执行的时候产生一个高效的查询执行计划.如果优化器不能选择最优的计划,那么就需要检查查询计划.统计信息.支持的索引等,而通过使用提示可以改变优化器选择查 ...
- SQL Server-聚焦IN VS EXISTS VS JOIN性能分析(十九)
前言 本节我们开始讲讲这一系列性能比较的终极篇IN VS EXISTS VS JOIN的性能分析,前面系列有人一直在说场景不够,这里我们结合查询索引列.非索引列.查询小表.查询大表来综合分析,简短的内 ...
- SQL Server-聚焦NOT EXISTS AND NOT IN性能分析(十五)
前言 上一节我们分析了INNER JOIN和IN,对于不同场景其性能是不一样的,本节我们接着分析NOT EXISTS和NOT IN,简短的内容,深入的理解,Always to review the b ...
- SQL优化系列——子查询
sql调优方法: (1)not in子查询优化 尽量避免子查询select * from a where id not in(select id from b); select * from a wh ...
- SQL优化-标量子查询(数据仓库设计的隐患-标量子查询)
项目数据库集群出现了大规模节点宕机问题.经查询,问题在于几张表被锁.主要问题在于近期得几个项目在数据库SQL编写时大量使用了标量子查询. 为确定为题确实是由于数据表访问量超过单节点限制,做了一些测试. ...
- mysql SQL优化之嵌套查询-遁地龙卷风
(-1) 写在前面 这篇随笔的数据使用的是http://blog.csdn.net/friendan/article/details/8072668#comments里的,里面有一些常见的select ...
- Oracle Sql优化之分层查询(connect by)
1.对于表中行与行存在父子关系时,可以通过connect by查询方式,查询行与行之间的父子关系 ),'-')|| empno as tempno, ename,mgr,level, decode(, ...
- SQL Server DBA日常查询视图_数据库性能视图
1.获取有关按平均CPU 时间排在最前面的五个查询的信息 total_worker_time/execution_count AS [Avg CPU Time], ), ((CASE qs.state ...
- SQL Server-分页方式、ISNULL与COALESCE性能分析(八)
前言 上一节我们讲解了数据类型以及字符串中几个需要注意的地方,这节我们继续讲讲字符串行数同时也讲其他内容和穿插的内容,简短的内容,深入的讲解,Always to review the basics. ...
随机推荐
- Opencv 特征提取与检测-Haar特征
Haar特征介绍(Haar Like Features) 高类间变异性 低类内变异性 局部强度差 不同尺度 计算效率高 这些所谓的特征不就是一堆堆带条纹的矩形么,到底是干什么用的?我这样给出 ...
- Codeforces 1149C 线段树 LCA
题意:给你一个括号序列,这个括号序列将确定一颗二叉树.有q次询问,每次询问输出这颗树的直径. 思路:https://blog.csdn.net/Huah_2018/article/details/89 ...
- vue 学习六 在组件上使用v-model
其实这个部分应该是属于component,为什么把这玩意单独拿出来呢,原因是它这个东西比较涉及到了vue的事件,以及v-model指令的使用,还是比较综合的.所以就拿出来啦 父组件 <templ ...
- 每天一个Linux命令:cd(2)
cd cd命令用来切换工作目录至dirname. 其中dirName表示法可为绝对路径或相对路径.若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录).另外, ...
- 行业顶级NoSQL成员坐阵,NoSQL数据库专场重点解析!
NoSQL数据库作为数据库市场最重要的组成之一,它的一举一动都影响着成千上万的企业.本专场邀请了行业顶级的NoSQL核心成员与大家共同展望NoSQL数据库的未来,阿里巴巴.MongoDB.Rediss ...
- luoguP2148 [SDOI2009]E&D [sg函数][组合游戏]
题目描述 小E 与小W 进行一项名为“E&D”游戏. 游戏的规则如下: 桌子上有2n 堆石子,编号为1..2n.其中,为了方便起见,我们将第2k-1 堆与第2k 堆 (1 ≤ k ≤ n)视为 ...
- Linux中网卡配置/etc/sysconfig/network-script/ifcfg-eth0
网络接口配置文件 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet #网卡类型 DEVIC ...
- Hbase的rowkey设计
HBase的rowKey设计技巧 1.设计宗旨与目标 主要目的就是针对特定的业务模型,按照rowKey进行预分区设计,使之后面加入的数据能够尽可能的分散于不同的rowKey中.比如复合RowKey. ...
- Openstack组件部署 — Netwotking service组件介绍与网络基本概念
目录 目录 前文列表 Openstack Networking serivce 基本的Neutron概念 Neutron的抽象对象 网络networks 子网subnets 路由器routers 端口 ...
- adb devices unauthorized的解决办法
Hi, trying to launch adb but get: daemon not running. starting it now on port * daemon started s ...