您好,登錄后才能下訂單哦!
這篇文章主要介紹“MYSQL慢查詢日志的查看方式”,在日常操作中,相信很多人在MYSQL慢查詢日志的查看方式問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MYSQL慢查詢日志的查看方式”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
前言:mysql的慢查詢日志是數據庫調優的一個主要依據,但是跟蹤出來的文件是一個文本文件,查看起來費時費力,mysql也提供了一個工具便于從文本文件里面查找的工具mysqldumpslow。
Mysqldumpslow是安裝數據庫時會自帶的一個軟件,在目錄/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 //平均獲取行數排序 at: average query time //平均查詢時間排序 c: count //執行次數 l: lock time //鎖定時間 r: rows sent //獲取行數排序 t: query time //查詢時間 -r reverse the sort order (largest last instead of first) //從小到大排序 -t NUM just show the top n queries //查詢結果的條目,后面跟數字 -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
查看訪問次數最多的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 執行次數 平均執行時間/總共執行時間 平均等待鎖時間/總等待鎖時間 平均獲取行數/總獲取行數 用戶 詳細的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 |
初步感覺這個語句是可以優化的;
總結:今天又看了公司的數據庫通過慢查詢日志把一條運行10S的語句優化成0.1S的語句,心情倍感高興;但這只是萬里長征的第一步,畢竟當一個數據庫運行到領導要DBA來優化的地步,說明已經有很多的SQL語句有性能問題了,所以路還長著了。
到此,關于“MYSQL慢查詢日志的查看方式”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。