索引優化分析(三)

2021-10-02 23:56:20 字數 1958 閱讀 6706

是mysql提供的一種日誌記錄,用來記錄在mysql中響應時間超過閾值的語句,具體指執行時間超過long_query_time值的sql, 則會被記錄到慢查詢日誌中;long_query_time的預設值為10s,sql語句執行超過10s,則記錄下來,在結合explain + sql語句分析。

(1)檢視是否開啟慢查詢日誌,預設關閉狀態 > show variables like '%slow_query_log%'

(2)開啟慢查詢日誌 > set global slow_query_log=1;

(3)慢查詢日誌引數配置

(1)檢視當前多少秒算慢 > show variables like '%long_query_time%'

(2)設定慢查詢日誌的闕值時間 >set global long_query_time=3

(4)執行sql語句,如查詢超過闕值,則記錄到慢查詢日誌檔案中,通過檢視檔案獲取sql語句並分析

(5)查詢當前系統中有多少條慢查詢記錄 >show global status like '%slow_queries%'

給慢查詢日誌提供了查詢相關的命令,方便獲取想要的慢查詢日記記錄資訊(mysqldumpslow -help命令說明)

檢視mysqldumpslow的幫助資訊:

(1)s:表示按照何種方式排序

(2)c:訪問的次數

(3)l:鎖定時間

(4)r:返回的記錄

(5)t:查詢時間

(6)al:平均鎖定時間

(7)ar:平均返回記錄數

(8)at:平均查詢時間

(9)t:為返回前面多少條資料

(10)g:後邊搭配乙個正則匹配模式,大小寫不敏感

示範:

(1)得到返回記錄集最多的10個sql > mysqldumpslow -s r -t 10 /var/slow-log.log(慢查詢日誌路徑c

(2)得到訪問次數最多的10個sql > mysqldumpslow -s c -t 10 /var/slow-log.log

(3)得到按照時間排序的前10裡面含有左連線的查詢語句 >mysqldumpslow -s t -t 10 -g "left join" var/slow-log.log

(4)建議在使用這些命令時結合|和more使用,否則有可能出現爆屏情況 >mysqldumpslow -s r -t 10 /var/slow-log.log | more

是mysql提供可以用來分析當前會話中的語句執行的資源消耗情況,可以用於sql的調優的測量,預設的情況下,引數處於關閉的狀態,並儲存最近15次的執行結果。

(1)是否支援,檢視當前的mysql版本是否支援 >show variables like '%profiling%'

(2)開啟功能,預設為關閉,使用前需要開啟 >set profiling=on

(3)執行sql

(4)檢視結果,show profile

(5)診斷sql,show profile cpu,block io for query number                      -- number:上一步查詢出來的數字號碼

查詢的型別有:

all:顯示所有的開銷資訊

(6)結果分析結論

1、converting heap to ondisk:表示查詢結果太大,記憶體都不夠用了往磁碟上搬了

2、creating temp table 建立臨時表(查詢時將結果複製到臨時表中,用完在刪除)

3、copying to temp table ondisk:把記憶體中的臨時表複製到磁碟中,耗io

(1)開啟慢查詢日誌,設定闕值、捕獲慢sql

(2)explain + 慢sql分析

(3)show profile查詢sql在mysql伺服器裡面的執行細節和生命週期情況

(4)sql資料庫伺服器的引數調優

索引優化分析(二)

explain sql語句 explain select from table name查詢結果如下 1 id selectct 查詢的序列號,包含一組數字,表示查詢中執行select子句或操作表的順序 查詢順序 a id相同,執行順序由上至下 b id不同,如果是子查詢,id的序號會遞增,id值越...

MySQL索引優化分析

1.通過訂單號查詢某個訂單,用唯一索引 資料量幾百萬以上 2.order by 排序時,後面欄位加 強制指定索引 select from orderforce index idx ordere order by order level,input date 哪些情況需要建索引 1 主鍵,唯一索引 2...

多表索引優化分析

圖為兩張表 左連線用右表索引 select from class left join book on class.card book.card 那麼索引應該建在右表book的card欄位。右連線用左表索引 如果索引已然建立在class的card欄位上,那麼使用select from book rig...