SQL 性能分析 SQL运行优化

前言:

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

1.SQL性能分析工具

工具:profiling sql

1.查看MySQL的Profiling是否打开框架

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

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

2.运行一条SQL语句函数

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

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

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

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

show profile额外一些命令:

ALL 显示全部的开销信息
BLOCK IO (阻塞IO)

显示阻塞输入和输出的操做次数测试

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

 

语法以下:spa

    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:显示交换次数相关开销的信息 code

 

关于 MySQL 的 Query cache 参考:

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

相关文章
相关标签/搜索