日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

mysql sql优化与调优机制详解_MySQL之SQL优化详解(一)

發(fā)布時間:2024/10/8 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql sql优化与调优机制详解_MySQL之SQL优化详解(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

序言: 在我面試很多人的過程中,很多人談到SQL優(yōu)化都頭頭是道,建索引,explain分析,like全模糊會導致索引失效 云云,于是我問道:優(yōu)化之前,需要找出數(shù)據(jù)庫中比如超過2s的慢SQL,你是怎么找的?很多人答不上來,要是找都找不到,怎么去優(yōu)化呢,一個中大型系統(tǒng)可能成千上萬條SQL都不過分,難道要一個個去分析么。

所以今天和大家聊聊?慢SQL的挖掘機-慢查詢?nèi)罩?/p>

慢查詢?nèi)罩?/p>

MySQL的慢查詢?nèi)罩臼荕ySQL提供的一種日志記錄,它用來記錄在MySQL中響應(yīng)時間超過閥值的語句,具體指運行時間超過long_query_time值的SQL,則會被記錄到慢查詢?nèi)罩局小?/p>

當然,如果不是調(diào)優(yōu)需要的話,一般不建議啟動該參數(shù),因為開啟慢查詢?nèi)罩緯蚨嗷蛏賻硪欢ǖ男阅苡绊憽?/p>

1. 慢查詢?nèi)罩鹃_啟

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

開啟慢查詢?nèi)罩?#xff1a;set global slow_query_log=1; (重啟會失效)

開啟了慢查詢?nèi)罩竞?#xff0c;什么樣的SQL才會記錄到查詢?nèi)罩纠锩?#xff1f;

這個是由參數(shù)long_query_time控制,默認情況下long_query_time的值為10秒

查看命令:?show variables like 'long_query_time%';

注: 永久設(shè)置慢查詢?nèi)罩鹃_啟,以及設(shè)置慢查詢?nèi)罩緯r間臨界點(不建議)

linux中,mysql配置文件一般默認在 /etc/my.cnf 更改對應(yīng)參數(shù)即可

2. 慢查詢?nèi)罩驹O(shè)置與查看

設(shè)置閥值命令:?set global long_query_time=3 (修改為閥值到3秒鐘的就是慢sql)

為什么設(shè)置后看不出變化:

需要重新連接或新開一個會話才能看到修改值。 show variables like 'long_query_time%';

直接 show global variables like 'long_query_time';

查看慢查詢?nèi)罩?#xff1a;

cat -n /data/mysql/mysql-slow.log

從慢查詢?nèi)罩局?#xff0c;我們可以看到每一條查詢時間高于3s 的sql語句,并可以看到執(zhí)行的時間是多少。

比如上面,就表示 sql語句??select * from comic where comic_id < 1952000;? 執(zhí)行時間為3.902864秒,超出了我們設(shè)置的慢查詢時間臨界點3s,所以被記錄下來了

查看有多少條慢查詢記錄:?show global status like '%Slow_queries%';

3.日志分析工具mysqldumpslow

在生產(chǎn)環(huán)境中,如果要手工分析日志,查找、分析SQL,顯然是個體力活,MySQL提供了日志分析工具?mysqldumpslow

s: 是表示按照何種方式排序

c: 訪問次數(shù)

l: 鎖定時間

r: 返回記錄

t: 查詢時間

al:平均鎖定時間

ar:平均返回記錄數(shù)

at:平均查詢時間

t:即為返回前面多少條的數(shù)據(jù)

g:后邊搭配一個正則匹配模式,大小寫不敏感的

工作常用參考:

得到返回記錄集最多的10個SQL:?mysqldumpslow -s r -t 10 /var/lib/mysql/mysql-slow.log

得到訪問次數(shù)最多的10個SQL:?mysqldumpslow -s c -t 10 /var/lib/mysql/mysql-slow.log

得到按照時間排序的前10條里面含有左連接的SQL:?mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/mysql-slow.log

建議: 為方便 可以結(jié)合 | 和 more 使用,否則可能出現(xiàn)爆屏

mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log | more

總結(jié)

以上是生活随笔為你收集整理的mysql sql优化与调优机制详解_MySQL之SQL优化详解(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。