溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MYSQL慢查詢?nèi)罩镜牟榭捶绞?/h1>
發(fā)布時間:2021-08-16 00:13:49 來源:億速云 閱讀:1869 作者:chen 欄目:MySQL數(shù)據(jù)庫

這篇文章主要介紹“MYSQL慢查詢?nèi)罩镜牟榭捶绞健?,在日常操作中,相信很多人在MYSQL慢查詢?nèi)罩镜牟榭捶绞絾栴}上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MYSQL慢查詢?nèi)罩镜牟榭捶绞健钡囊苫笥兴鶐椭?!接下來,請跟著小編一起來學(xué)習(xí)吧!

前言:mysql的慢查詢?nèi)罩臼菙?shù)據(jù)庫調(diào)優(yōu)的一個主要依據(jù),但是跟蹤出來的文件是一個文本文件,查看起來費時費力,mysql也提供了一個工具便于從文本文件里面查找的工具mysqldumpslow。

Mysqldumpslow是安裝數(shù)據(jù)庫時會自帶的一個軟件,在目錄/usr/local/mysql/bin下面    

[root@mysql01 data]# /usr/local/mysql/bin/mysqldumpslow --help

Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]

Parse and summarize the MySQL slow query log. Options are

--verbose verbose

--debug debug

--help write this text to standard output

-v verbose

-d debug

-s ORDER what to sort by (al, at, ar, c, l, r, t), 'at' is default //表示排序的類型

al: average lock time //按平均鎖定時間排序

ar: average rows sent //平均獲取行數(shù)排序

at: average query time //平均查詢時間排序

c: count //執(zhí)行次數(shù)

l: lock time //鎖定時間

r: rows sent //獲取行數(shù)排序

t: query time //查詢時間

-r reverse the sort order (largest last instead of first) //從小到大排序

-t NUM just show the top n queries //查詢結(jié)果的條目,后面跟數(shù)字

-a don't abstract all numbers to N and strings to 'S'

-n NUM abstract numbers with at least n digits within names

-g PATTERN grep: only consider stmts that include this string //包含特定的字符或字符串

-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),

default is '*', i.e. match all

-i NAME name of server instance (if using mysql.server startup script)

-l don't subtract lock time from total time

[root@mysql01 data]# /usr/local/mysql/bin/mysqldumpslow -s c -t 10 /data/JOEONE-IPOSDS-01-slow.log

查看訪問次數(shù)最多的10個sql語句;

l [root@mysql01 data]# /usr/local/mysql/bin/mysqldumpslow -s r -t 10 /data/JOEONE-IPOSDS-01-slow.log

查看返回記錄集最多的10個sql語句

l [root@mysql01 data]# /usr/local/mysql/bin/mysqldumpslow -t 10 -s t -g "left join" /data/JOEONE-IPOSDS-01-slow.log

查看使用left join的語句

Count: 132     Time=4.21s (555s)            Lock=0.00s (0s)             Rows=0.4 (53), ipos[ipos]@3hosts

執(zhí)行次數(shù)  平均執(zhí)行時間/總共執(zhí)行時間   平均等待鎖時間/總等待鎖時間 平均獲取行數(shù)/總獲取行數(shù)  用戶

詳細的SQL語句

SELECT cus.zjhfrq,cus.zjrq,cus.headphoto,cus.sr1,cus.sr2,cus.vip,cus.xb,cus.Id,cus.gkdm,cus.gkmc,cus.sj,cus.dh,cus.dz,cus.bz,cus.scdh,cus.sy,cus.lylx,cus.cdbh,cus.jdrq,cus.zd_id,kh.khmc as zdmc, dj.khmc as djzdmc,cus.xfje,cus.dj_zd

FROM ipos_customer cus LEFT JOIN com_base_kehu kh ON kh.Id=cus.zd_id LEFT JOIN com_base_kehu dj ON dj.Id=cus.dj_zd WHERE N=N and ( ((cus.zd_id='S'OR cus.dj_zd='S') and cus.vip=N) or ((cus.zd_id='S'OR cus.dj_zd='S') and cus.vip=N)) and cus.sj like 'S' and N=N and N=N order by cus.gkdm DESC LIMIT N

初步感覺這個語句是可以優(yōu)化的;

總結(jié):今天又看了公司的數(shù)據(jù)庫通過慢查詢?nèi)罩景岩粭l運行10S的語句優(yōu)化成0.1S的語句,心情倍感高興;但這只是萬里長征的第一步,畢竟當(dāng)一個數(shù)據(jù)庫運行到領(lǐng)導(dǎo)要DBA來優(yōu)化的地步,說明已經(jīng)有很多的SQL語句有性能問題了,所以路還長著了。

到此,關(guān)于“MYSQL慢查詢?nèi)罩镜牟榭捶绞健钡膶W(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)
AI