mysql性能优化学习笔记(2)如何发现有问题的sql
一、使用mysql慢查询日志对有效率问题的sql进行监控
1)开启慢查询
show variables like ‘slow_query_log’;//查看是否开启慢查询日志
set global slow_query_log_file=‘/mysql/‘; //设置慢查询日志的位置
set global log_queries_not_using_indexes=on;//设置没有使用索引的sql语句
set global long_query_time=1;//设置超过1秒的sql语句进行记录。
注意:这里设置了long_query_time后,会发现设置不成功,可能是一个bug,需要重新开启一个终端,再查询一下设置,会发现生效了。
2)查看慢查询日志的格式
# Time: 151115 6:35:08
# User@Host: root[root] @ localhost []
# Query_time: 0.007896 Lock_time: 0.006150 Rows_sent: 200 Rows_examined: 200
SET timestamp=1447540508;
select * from actor;
3)工具一:mysqldumpslow
mysqldumpslow -t 3 /var/lib/mysql/localhost-centos6-slow.log
前三条的日志
格式:
Count: 1 Time=0.00s (0s) Lock=0.01s (0s) Rows=200.0 (200), root[root]@localhost
select * from actor
4)工具二:pt-query-digest工具
安装:
[root@localhost-centos6 ~]# wget percona.com/get/pt-query-digest
[root@localhost-centos6 ~]# chmod u+x pt-query-digest
[root@localhost-centos6 ~]# mv /root/pt-query-digest /usr/bin/
用法:pt-query-digest slow-log > show_report.log //输出到文件
pt-query-digest slow-log | more
该工具需要深入学习……
5)如何通过慢查询日志寻找问题
1)查询次数多,且每次查询占用时间长的sql
通常为pt-query-digest分析的前几个查询
2)I/O大的sql
注意:pt-query-digest中得Rows examine项
3)未命中索引的sql
注意:pt-query-digest中得Rows examine和Rows send对比
f)如何分析sql语句
使用explain查询sql执行计划
mysql> explain select * from customer;
+----+-------------+----------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | customer | ALL | NULL | NULL | NULL | NULL | 671 | |
+----+-------------+----------+------+---------------+------+---------+------+------+-------+
1 row in set (0.01 sec)
解释:
table:表名;
type:连接的类型,const、eq_reg、ref、range、index和ALL;const:主键、索引;eq_reg:主键、索引的范围查找;ref:连接的查找(join),range:索引的范围查找;index:索引的扫描;
possible_keys:可能用到的索引;
key:实际使用的索引;
key_len:索引的长度,越短越好;
ref:索引的哪一列被使用了,常数较好;
rows:mysql认为必须检查的用来返回请求数据的行数;
extra:using filesort、using temporary(常出现在使用order by时)时需要优化。
mysql性能优化学习笔记(2)如何发现有问题的sql的更多相关文章
- mysql性能优化学习笔记
mysql性能优化 硬件对数据库的影响 CPU资源和可用内存大小 服务器硬件对mysql性能的影响 我们的应用是CPU密集型? 我们的应用的并发量如何? 数量比频率更好 64位使用32位的服务器版本 ...
- mysql性能优化学习笔记-参数介绍及优化建议
MySQL服务器参数介绍 mysql参数介绍(客户端中执行),尽量只修改session级别的参数. 全局参数(新连接的session才会生效,原有已经连接的session不生效) set global ...
- mysql性能优化学习笔记(1)优化目的、方向及数据库准备
前言: 最近参加面试,问到了很多关于mysql的优化方面的问题,回答的不是很好,也是因为原先做的项目流量不是很大,所以对mysql优化不是太了解,所以趁着周末,恶补一下. 本文来源于慕课网sqlerc ...
- mysql性能优化学习笔记-存储引擎
mysql体系架构 客户端(java.php.python等) mysql服务层(连接管理器.查询解析器.查询优化器.查询缓存) mysql存储引擎(innodb.myisam等) 存储引擎针对表而言 ...
- mysql性能优化学习笔记(6)数据库配置优化&硬件优化
一.操作系统配置优化: 1. 网络方面,修改/etc/sysctl.conf文件,增加tcp支持的队列数,减少断开连接时,资源的回收. 2. 打开文件数的限制.修改 ...
- mysql性能优化学习笔记(4)索引的优化
一.选择合适的索引列 1.在where,group by,order by,on从句中出现的列 2.索引字段越小越好(因为数据库的存储单位是页,一页中能存下的数据越多越好 ) ...
- mysql性能优化学习笔记(3)常见sql语句优化
一.max()优化mysql> explain select max(payment_date) from payment;+----+-------------+---------+----- ...
- mysql性能优化学习笔记(5)数据库结构优化
一.选择合适的数据类型 1.使用可存下数据的最小的数据类型 2.使用简单地数据类型,Int<varchar 3.尽可能使用not null定义字段 4.尽量少用text, ...
- Pandas 性能优化 学习笔记
摘要 本文介绍了使用 Pandas 进行数据挖掘时常用的加速技巧. 实验环境 import numpy as np import pandas as pd print(np.__version__) ...
随机推荐
- HDU 5724 - Chess
题意: 一个n行20列的棋盘. 每一行有若干个棋子. 两人轮流操作, 每人每次可以将一个棋子向右移动一个位置, 如果它右边有一个棋子, 就跳过这个棋子, 如果有若干个棋子, 就将这若干个 ...
- bluestacks安装安卓引擎时出现2502 2503错误的解决办法
2503代表工作站无法启动.2502代表下面的程序调用不支持的MS-DOS函数. 以管理员身份运行命令提示符在经典桌面使用快捷键Win+X,出现一个菜单,选择“命令提示符(管理员) ”即可以以管理员身 ...
- (转)C/C++中static关键字
下面的转自http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777441.html 静态变量作用范围在一个文件内,程序开始时分配空间,结束 ...
- cocos2dx工程中接入支付宝sdk
1. 首先去支付宝官网下载开发者文档 2. 然后按着开发者文档将支付宝的sdk导入到你的工程中,并关联到工程中,步骤入下图: (1)将从支付宝官方网站获得的支付宝的sdk的jar包拷贝到工程中的lib ...
- 编译安装mysql5.7.9
第一步:安装一些可能会用到的依赖 yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib lib ...
- 通过HOOK控制进程的创建
一. 简介 最近,我了解到一个叫做Sanctuary的相当有趣的安全产品.它能够阻止任何程序的运行-这些程序没有显示在软件列表中-该表中的程序被允许在一个特定的机器上运行.结果,PC用户得到保护而免于 ...
- webshell 匿名用户(入侵者)
“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限.webshell常常被称为匿名用户(入侵者)通过网站端口对网站服务器的某种程度上操作的权限.由于w ...
- 伪造 UDP 包源 IP 地址
Raw sockets 方式 raw socket 可通过参数 IPV6_HDRINCL 或 IP_HDRINCL 自定义IP头——伪造UDP报文源IP就全靠它了. 限制:从xp sp2之后的所有非 ...
- AIX安装SSH
AIX 7.1 进入 https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=aixbp 先下载需要的openssl,op ...
- VMware网络模式介绍(下篇)
VMware网络模式介绍 VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式). Bridged 模式: 在桥接模式下,VMwa ...