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

相關文章
相關標籤/搜索