MySQL 高級--優化 —— show profile

1、show profile 是什麼

是mysql提供可以用來分析當前會話中語句執行的資源消耗情況。可以用於SQL的調優的測量。

官網:http://dev.mysql.com/doc/refman/5.5/en/show-profile.html

2、查看 profile 的開啓狀態

默認情況下,參數處於關閉狀態,並保存最近15次的運行結果。

show variables like '%profiling%';  

在這裏插入圖片描述

3、開啓 profiles 的狀態

set profiling=1;           ##  開啓show profiles

show variables like '%profiling%';  ## 再次確認開啓狀態

在這裏插入圖片描述

4、 運行sql

運行幾個較複雜、耗時間的sql,以便查看效果。

select * from emp group by id%10 limit 150000;
select * from emp group by id%20 order by 5select * from dept;

5、 查看結果

show profiles;

在這裏插入圖片描述

6、診斷SQL

show profile cpu,block io for query n ;  ## n爲上一步前面的問題SQL數字號碼

在這裏插入圖片描述

type:
	| ALL              --顯示所有的開銷信息
	| BLOCK IO         --顯示塊IO相關開銷
	| CONTEXT SWITCHES  --上下文切換相關開銷
	| CPU              --顯示CPU相關開銷信息
	| IPC              --顯示發送和接收相關開銷信息
	| MEMORY           --顯示內存相關開銷信息
	| PAGE FAULTS      --顯示頁面錯誤相關開銷信息
	| SOURCE           --顯示和Source_function,Source_file,Source_line相關的開銷信息
	| SWAPS            --顯示交換次數相關開銷的信息

下圖是網上找的,對某個SQL進行分析時,耗時特別長的。
在這裏插入圖片描述

7、開發中注意的事項

執行 show profile cpu,block io for query n ; 的結果中,出現下面的情況,則意味着SQL急需優化:

  1. converting HEAP to MyISAM
    查詢結果太大,內存都不夠用了往磁盤上搬了。
  2. Creating tmp table
    創建臨時表,拷貝數據到臨時表,用完再刪除表。
  3. Copying to tmp table on disk
    把內存中臨時表複製到磁盤,危險!
  4. locked
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章