MySQL5.6 怎样优化慢查询的SQL语句 -- SQL优化
上篇:MySQL5.6 怎样优化慢查询的SQL语句 -- 慢日志介绍
在实际的日志分析中,通常慢日志的log数量不少,同一时候同样的查询被记录的条数也会非常多。这里就须要怎样从慢日志查询中找到最有问题,最须要优化的日志。在这方面,有非常多分析工具,最主要的分析工具就是MySQL自带的mysqldumpslow,mysqldumpslow(Perl脚本)的输出演示样例:
[root@cloudlu bin]# ./mysqldumpslow -s t -t 1 /usr/local/mysql/data/cloudlu-slow.log Reading mysql slow query log from /usr/local/mysql/data/cloudlu-slow.log
Count: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows=3.0 (3), root[root]@localhost
select * from t
一看就非常清楚。它的输出主要 统计不同慢sql的出现次数(Count 1),运行最长时间(Time 0.00s),累计总耗费时间(Time 0s),等待锁的时间(Lock 0.00s),等待锁的总时间(Lock 0s)。发送给client的行总数(Rows 3.0),扫描的行总数(Rows
3),用户(root)以及sql语句本身。它最经常使用的參数包含:
-s 排序选项:c 查询次数 r 返回记录行数 t 查询时间
-t n:显示top n条查询
对于一般的分析已经几乎相同了,只是对于百分比等等数据mysqldumpslow就不够完好了。所以世界上多了非常多各种MySQL慢日志分析工具,比較优秀的有mysqlsla(Perl脚本)和pt-query-digest(Perl脚本)。能够提供Count,
sql的运行次数及占总的slow log数量的百分比。Time, 运行时间, 包含总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比,95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的运行时间,Lock Time, 等待锁的时间,95% of Lock , 95%的慢sql等待锁时间,Rows sent, 结果行统计数量, 包含平均, 最小, 最大数量,Rows examined, 扫描的行数量,还能够生成表报。存储分析结果。这里就不一一介绍了。
通过这些慢日志分析软件定位到了慢查询语句就已经完毕了SQL优化的一大半。接下来通过在MySQL中运行explain或者desc命令查看慢查询语句,能够看出为什么SQL查询慢。
mysql> explain select * from test.t \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: t
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 2
Extra: NULL
1 row in set (0.00 sec)
它的输出格式细节能够关注MySQL explain format。在输出中最要注意的是:
1. type:ALL是效率最差,最要注意的
2. key:是否有使用Key,key长度怎样
3. Extra:最好不要出现filesort以及temporary。最主要是要关注在orderby和groupby。
Note: SQL优化是个非常复杂的过程,有可能出现拆东墙补西墙的情况:比方给数据库表添加了索引之后。确实查询快了,但是存储空间加多了,插入删除操作耗时也添加了,假设在一个写多读少的系统中,运行这样的优化可能会起到反效果。所以优化完之后千万不能大意。要持续监控系统。防止出现引入新瓶颈的情况。
MySQL5.6 怎样优化慢查询的SQL语句 -- SQL优化的更多相关文章
- SQL语句常见优化十大案例
1.慢SQL消耗了70%~90%的数据库CPU资源: 2.SQL语句独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低:3.SQL语句可以有不同的写法: 1 ...
- 谈谈SQL 语句的优化技术
https://blogs.msdn.microsoft.com/apgcdsd/2011/01/10/sql-1/ 一.引言 一个凸现在很多开发者或数据库管理员面前的问题是数据库系统的性能问题.性能 ...
- oracle中sql语句的优化
oracle中sql语句的优化 一.执行顺序及优化细则 1.表名顺序优化 (1) 基础表放下面,当两表进行关联时数据量少的表的表名放右边表或视图: Student_info (30000条数据)D ...
- Oracle SQL语句性能优化方法大全
Oracle SQL语句性能优化方法大全 下面列举一些工作中常常会碰到的Oracle的SQL语句优化方法: 1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的 ...
- sql 语句的优化
sql语句的优化:在大多数情况下,为了更快的遍历表结构,优化器主要是根据定义的索引来提高性能.但是在不合理的SQL语句中,优化器会删去索引进而使用全表扫描, 一般而言,这种sql被称为劣质sql,所以 ...
- Oracle数据库的sql语句性能优化
在应用系统开发初期,由于开发数据库数据比较少,对于查询sql语句,复杂试图的编写等体会不出sql语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目 ...
- MySQL索引详解(优缺点,何时需要/不需要创建索引,索引及sql语句的优化)
一.什么是索引? 索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息. 二.索引的作用? 索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提 ...
- 52 条 SQL 语句性能优化策略,建议收藏
本文会提到 52 条 SQL 语句性能优化策略. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引. 2.应尽量避免在where子句中对字段进行nul ...
- 提高数据库的查询速率及其sql语句的优化问题
在一个千万级的数据库查寻中,如何提高查询效率? 1)数据库设计方面: a.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. b.应尽量避免在 ...
随机推荐
- 在Xcode6中搭建Python开发环境
http://jingyan.baidu.com/article/f71d60379c73001ab741d14e.html 对于使用Mac电脑,刚入门Python的同学,一定很好奇是不是可以使用Xc ...
- HDU1143(3*N的地板铺1*2的砖)
Tri Tiling Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- linux知识复习1-dup dup2
#include <sys/stat.h> #include <string.h> #include <fcntl.h> #include <stdio.h& ...
- Windows下搭建本地SVN服务器【转】
转自:http://www.linuxidc.com/Linux/2015-01/111563.htm 本文介绍Windows下搭建本地SVN服务器的方法,网上资料比较少也比较旧,大都介绍的是旧版本S ...
- 【反演复习计划】【bzoj3529】数表
Orz PoPoQQQ大爷 按照他ppt的解法,这题可以划归到之前的题了OrzOrz 跪wy写的题解(Stealth Assassin)https://www.luogu.org/wiki/show? ...
- Chrome扩展及应用开发
Chrome扩展及应用开发(电子书) http://www.ituring.com.cn/minibook/950 文档 官方 https://developer.chrome.com/extensi ...
- [ Openstack ] Openstack-Mitaka 高可用之 memcache
目录 Openstack-Mitaka 高可用之 概述 Openstack-Mitaka 高可用之 环境初始化 Openstack-Mitaka 高可用之 Mariadb-Galera集群 ...
- selenium+python自动化82-只截某个元素的图【转载】
前言 selenium截取全图小伙伴们都知道,曾经去面试的时候,面试官问:如何截图某个元素的图?不要全部的,只要某个元素...小编一下子傻眼了,苦心人,天不负,终于找到解决办法了. selenium截 ...
- java 反射赋空值
https://stackoverflow.com/questions/10087989/how-do-i-reflectively-invoke-a-method-with-null-as-argu ...
- 编译opencv有关cuda的代码
opencv3.2提供了cuda很好的支持,cuda的opencv接口,让用户想使用opencv那样去使用cuda,不用写cuda代码 一开始编译opencv有关cuda的代码,opencv 里sam ...