mysql查詢優(yōu)化

慢日志

配置

1、 慢日志

#查看是否開啟 
show variables like '%slow_query_log%'; 

#開啟
set global slow_query_log = 1;

#時(shí)間閾值
show variables like '%long_query_time%'

#設(shè)置
set global long_query_time = 1;

#重新打開鏈接,測(cè)試
SELECT sleep(4)

#查看慢日志條數(shù)
show global status like '%slow_queries%'
查看滿日志條數(shù).png

永久生效

vim /etc/mysql/my.cnf

slow_query_log =1

slow_query_log_file=/tmp/mysql_slow.log

慢日志分析

mysqldumpslow 

  -s ORDER  排序方式
    
        c: 訪問計(jì)數(shù)
        l: 鎖定時(shí)間
        r: 返回記錄
        t: 查詢時(shí)間
        al:平均鎖定時(shí)間
        ar:平均返回記錄數(shù)
        at:平均查詢時(shí)間
  
  -r           倒序排
  -t NUM       只返回前幾條
  -g PATTERN   正則表達(dá)式
  

用show profile進(jìn)行sql分析

show profile 用于查詢sql 執(zhí)行的資源消耗,默認(rèn)關(guān)閉,只記錄最近15條

配置

#查詢是否開啟
show variables like '%profiling%';

#開啟
set profiling = on;

#查看記錄列表
show profiles
記錄慢日志.png

使用

show profile cpu, block io for query 5;
sql執(zhí)行分析.png
Show profile后面的一些參數(shù):

All:顯示所有的開銷信息

Block io:顯示塊IO相關(guān)開銷

Context switches: 上下文切換相關(guān)開銷

Cpu:顯示cpu相關(guān)開銷

Memory:顯示內(nèi)存相關(guān)開銷

Source:顯示和source_function,source_file,source_line相關(guān)的開銷信息

explain 執(zhí)行計(jì)劃

官方解釋:
https://dev.mysql.com/doc/refman/5.7/en/explain-output.html

  • id 查詢序列號(hào),倒序執(zhí)行,從上至下
  • select_type 查詢類型
    • simple 簡(jiǎn)單查詢,不包含子查詢和union
    • primary 包含子查詢的,最外層查詢
    • subquery select或 where 里面包含子查詢
    • derived 在from 列表中包含的子查詢
    • union 并集的第二個(gè)select 查詢
  • table 指定數(shù)據(jù)來源
  • partitions 匹配的分區(qū)
  • type 表的連接類型,性能由高到低排列
    • system 表只有一行記錄,相當(dāng)于系統(tǒng)表
    • const 通過索引查找,只匹配一行
    • eq_ref 唯一索引掃描
    • ref 非唯一索引掃描
    • range 索引范圍查詢
    • index 只遍歷索引樹
    • ALL 全表掃描
  • possible_keys 使用的索引
  • key 實(shí)際使用的索引
  • key_len 索引中使用的字節(jié)數(shù)
  • ref 顯示該表的索引字段,關(guān)聯(lián)了哪張表
  • rows 掃描的行數(shù)
  • filtered 結(jié)果返回的行數(shù)占讀取的行數(shù)
  • extra 額外信息
    • using filesort 文件排序
    • using temporary 使用臨時(shí)表
    • using index 使用了覆蓋索引
    • using where 使用了where 子句
    • using join buffer 使用連接緩沖
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容