sql優化調整: explain select ...: 執行計劃 執行結果分析: select_type: 查詢類型 SIMPLE:不包含子查詢 PRIMARY:複雜sql最外層的類型 type:遍歷類型 ALL:遍歷全表匹配行 index: 只遍歷索引樹 range:索引範圍掃描 key: 是否實際使用索引: NULL,則沒有使用索引 是消耗IO多,仍是CPU計算多? set profiling = 1; 開始sql語句分析 show profiles; 查看執行sql時間 show profile for query 1; 查看第一個sql執行的各個耗時詳情 show profile cpu for query 1; 查看第一個sql執行的cpu耗時詳情 show profile all for query 1; 查看第一個sql執行的耗時詳情 SHOW profile CPU,BLOCK IO FOR query 2; 通常查詢cpu和io詳情 type: ALL --顯示全部的開銷信息 | BLOCK IO --顯示塊IO相關開銷 | CONTEXT SWITCHES --上下文切換相關開銷 | CPU --顯示CPU相關開銷信息 | IPC --顯示發送和接收相關開銷信息 | MEMORY --顯示內存相關開銷信息 | PAGE FAULTS --顯示頁面錯誤相關開銷信息 | SOURCE --顯示和Source_function,Source_file,Source_line相關的開銷信息 | SWAPS --顯示交換次數相關開銷的信息 +----------------------+----------+----------+------------+ starting:開始 checking permissions:檢查權限 Opening tables:打開表 init : 初始化 System lock :系統鎖 optimizing : 優化 statistics : 統計 * preparing :準備 executing :執行 * Sending data :發送數據 * Sorting result :排序 * end :結束 query end :查詢 結束 closing tables : 關閉表 /去除TMP 表 freeing items : 釋放物品 cleaning up :清理 +----------------------+----------+----------+------------+ show variables like "%version%" 查看數據庫版本信息 show variables like "%profil%"; 查看sql分析開發是否開啓 set profiling = 0; 測試完成須要關閉 通常簡易的流程: (1)開啓profile分析 (2)執行sql (3)查看sql分析結果 (4)SHOW profile CPU,BLOCK IO io FOR query 1; //查看指定sql的CPU、IO消耗 (5)關閉profile分析 參考:https://segmentfault.com/a/1190000016351095 查詢數據量和索引量 select table_schema as '數據庫', table_name as '表名', table_rows as '記錄數', truncate(data_length/1024/1024, 2) as '數據容量(MB)', truncate(index_length/1024/1024, 2) as '索引容量(MB)' from information_schema.tables order by data_length desc, index_length desc; 查看當前線程處理狀況: show processlist 或 show full processlist 殺死某個進程: kill 183665 查看未睡眠的進程: select id, db, user, host, command, time, state, info from information_schema.processlist where command != 'Sleep' order by time desc 參考: https://blog.csdn.net/ty_hf/article/details/54895026