mysql性能分析

1、set profiling = 1;

show PROFILES;

2、set @query_id = 1;

select state, sum(duration) as Total_R, ROUND(100*SUM(DURATION) / (select SUM(duration)
FROM information_schema.PROFILING 
where query_id = @query_id), 2) as Pct_R, COUNT(*) as Calls, sum(duration) / count(*) as "R/Call"
From information_schema.PROFILING where query_id = @query_id group by state order by Total_R desc;

3、SHOW STATUS 是一 個 有用 的 工具, 但 並不是 一 款 剖析 工具( 12)。 SHOW STATUS 的 大部分 結果 都 只是 一個 計數器, 可以 顯示 某些 活動 如 讀 索引 的 頻繁 程度, 但 無法 給出 消耗 了 多少 時間。 SHOW STATUS 的 結果 中 只有 一條 指的 是 操作 的 時間( Innodb_ row_ lock_ time), 而且 只能 是 全 局級 的, 所以 還是 無法 測量 會話 級別 的 工作。


flush status;

select * from ad_config;

show status where variable_name like 'Handler%'  or variable_name like 'created%';


要 注意 SHOW STATUS 本身 也會 創建 一個 臨時 表, 而且 也會 通過 句柄 操作 訪問 此 臨時 表, 這 會 影響 到 SHOW STATUS 結果 中 對應 的 數字, 而且 不同 的 版本 可能 行爲 也 不盡相同。 比較 前面 通過 SHOW PROFILES 獲得 的 查詢 的 執行 計劃 的 結果 來看, 至少 臨時 表 的 計數器 多加 了 2。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章