SQL 性能分析 SQL运行优化

本文介绍如何使用MySQL自带的Profiling工具进行SQL性能分析,包括开启Profiling的方法、查看SQL执行概况及具体步骤。

前言:

说几句废话,在日常工作当中使用的更多的ORM框架是MyBatis,写的SQL(结构化查询语言)也从来没有测试过性能。在MySQL 5.0.37之后通过自带的Profiling工具能够很好的查看到SQL的运行瓶颈。

1.SQL性能分析工具

工具:profiling 

1.查看MySQL的Profiling是否打开

-- 查看profiling的参数
SHOW VARIABLES LIKE '%profil%';

-- 设置为0关闭,设置为1 开启
SET profiling = 1;

174759_r2lO_2433960.png

2.运行一条SQL语句

SELECT * FROM tableName;
--查看 Profiles
SHOW PROFILES;

181357_ue2F_2433960.png

上面查看到  Query_ID 为9,那么,通过Profiling再查看 Query_ID为3的这条SQL运行的详细数据。

SHOW PROFILE block io,cpu,ipc,memory FOR QUERY 9;

175845_TqDn_2433960.png

ok. 一条简单的SQL语句MySQL内部进行了 15次操作,

show profile额外一些命令:

ALL显示所有的开销信息
BLOCK IO (阻塞IO)

显示阻塞输入和输出的操作次数

CPU    显示用户CPU时间、系统CPU时间
CONTEXT SWITCHES(上下文切换)显示上下文切换的次数
IPC 过程间通信显示消息发送和接收的次数      (Internet Process Connection)
MEMORY   (内存)当前没有实现
PAGE FAULTS  (页面错误)显示主要和次要的页面错误
SOURCE  (源)从源代码显示函数的名字,连同文件的名称和行号及功能
SWAPS  (交换)显示交换数

 

语法如下:

    SHOW PROFILE [type [, type] ... ]
       [FOR QUERY n]
       [LIMIT row_count [OFFSET offset]]

    type:
         ALL:显示所有的开销信息
       | BLOCK IO:显示块IO相关开销
       | CONTEXT SWITCHES:上下文切换相关开销
       | CPU:显示用户CPU时间、系统CPU时间
       | IPC:显示发送和接收相关开销信息
       | MEMORY:目前没有实现
       | PAGE FAULTS:显示页面错误相关开销信息  
       | SOURCE:显示和Source_function,Source_file,Source_line相关的开销信息
       | SWAPS:显示交换次数相关开销的信息 

 

关于 MySQL 的 Query cache 参考:

http://www.ttlsa.com/mysql/disable-mysql-query-cache/

 

转载于:https://my.oschina.net/u/2433960/blog/887418

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值