日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql之慢查询详解,mysqldumpslow的使用

發(fā)布時(shí)間:2024/2/28 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql之慢查询详解,mysqldumpslow的使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)言

1. mysql中的慢查詢(xún)是我們分析問(wèn)題,定位問(wèn)題的利器,巧妙使用可以快速解決問(wèn)題

2. 原理:運(yùn)行時(shí)間超過(guò) long_query_time 的sql語(yǔ)句會(huì)被寫(xiě)入到慢查詢(xún)?nèi)罩疚募谢蛘適ysql.slow_log表中,long_query_time的默認(rèn)值是10s

3. 還可以使用慢日志分析工具 mysqldumpslow 來(lái)進(jìn)行分析慢查詢(xún)

相關(guān)參數(shù)

slow_query_log ? ?:是否開(kāi)啟慢查詢(xún)?nèi)罩?#xff0c;1表示開(kāi)啟,0表示關(guān)閉。

log-slow-queries ?:舊版(5.6以下版本)MySQL數(shù)據(jù)庫(kù)慢查詢(xún)?nèi)罩敬鎯?chǔ)路徑。可以不設(shè)置該參數(shù),系統(tǒng)則會(huì)默認(rèn)給一個(gè)缺省的文件host_name-slow.log

slow-query-log-file:新版(5.6及以上版本)MySQL數(shù)據(jù)庫(kù)慢查詢(xún)?nèi)罩敬鎯?chǔ)路徑。可以不設(shè)置該參數(shù),系統(tǒng)則會(huì)默認(rèn)給一個(gè)缺省的文件host_name-slow.log

long_query_time :慢查詢(xún)閾值,當(dāng)查詢(xún)時(shí)間多于設(shè)定的該值時(shí),則寫(xiě)入日志。注意該值修改后再次查詢(xún)顯示的還是舊值,要使用 show global variables like 'long_query_time'; 這樣的語(yǔ)句查詢(xún)才更新

log_queries_not_using_indexes:未使用索引的查詢(xún)也被記錄到慢查詢(xún)?nèi)罩局?#xff08;可選項(xiàng))。

log_output:日志存儲(chǔ)方式。log_output='FILE'表示將日志存入文件,默認(rèn)值是'FILE'。log_output='TABLE'表示將日志存入數(shù)據(jù)庫(kù),這樣日志信息就會(huì)被寫(xiě)入到mysql.slow_log表中。MySQL數(shù)據(jù)庫(kù)支持同時(shí)兩種日志存儲(chǔ)方式,配置的時(shí)候以逗號(hào)隔開(kāi)即可,如:log_output='FILE,TABLE'。日志記錄到系統(tǒng)的專(zhuān)用日志表中,要比記錄到文件耗費(fèi)更多的系統(tǒng)資源,因此對(duì)于需要啟用慢查詢(xún)?nèi)罩?#xff0c;又需要能夠獲得更高的系統(tǒng)性能,那么建議優(yōu)先記錄到文件

演示步驟

1. 查詢(xún)慢查詢(xún)是否開(kāi)啟,慢查詢(xún)的閾值,慢查詢(xún)?nèi)罩疚募穆窂?/span>

mysql> show global variables like '%query%'; +------------------------------+----------------------------------+ | Variable_name | Value | +------------------------------+----------------------------------+ | binlog_rows_query_log_events | OFF | | ft_query_expansion_limit | 20 | | have_query_cache | NO | | long_query_time | 10.000000 | | query_alloc_block_size | 8192 | | query_prealloc_size | 8192 | | slow_query_log | OFF | | slow_query_log_file | /var/lib/mysql/kickseed-slow.log | +------------------------------+----------------------------------+ 8 rows in set (0.00 sec)

?

long_query_time: 10.000000 表慢查詢(xún)的閾值是10s,可以精確到0.000001秒,也就是1微秒。關(guān)于運(yùn)行時(shí)間正好等于long_query_time的情況,并不會(huì)被記錄下來(lái)。也就是說(shuō),在mysql源碼里是判斷大于long_query_time,而非大于等于

slow_query_log:OFF 表慢查詢(xún)未開(kāi)啟

slow_query_log_file:slow_query_log_file 表慢查詢(xún)?nèi)罩疚募奈恢?/p>

2. 打開(kāi)慢查詢(xún)開(kāi)關(guān),修改慢查詢(xún)的閾值

mysql> set global slow_query_log=1; Query OK, 0 rows affected (0.00 sec)mysql> set global long_query_time=1.0; Query OK, 0 rows affected (0.00 sec)mysql> show global variables like '%query%'; +------------------------------+----------------------------------+ | Variable_name | Value | +------------------------------+----------------------------------+ | binlog_rows_query_log_events | OFF | | ft_query_expansion_limit | 20 | | have_query_cache | NO | | long_query_time | 1.000000 | | query_alloc_block_size | 8192 | | query_prealloc_size | 8192 | | slow_query_log | ON | | slow_query_log_file | /var/lib/mysql/kickseed-slow.log | +------------------------------+----------------------------------+ 8 rows in set (0.00 sec)

long_query_time: 1.000000 表慢查詢(xún)的閾值是1.0秒,運(yùn)行時(shí)間超過(guò)1秒的sql語(yǔ)句會(huì)被寫(xiě)入到慢日志文件

slow_query_log:ON?表慢查詢(xún)已開(kāi)啟

謹(jǐn)記:

1) : 修改long_query_time后再查詢(xún)不能使用 “show variables like '%query%';”來(lái)進(jìn)行查詢(xún),這樣查詢(xún)還是舊的,必須要在前面添加global才能查到最新的 long_query_time 值。當(dāng)然也可以斷開(kāi)這個(gè)連接,重新連接進(jìn)來(lái)再查詢(xún)不使用global也行

2) : 而且修改long_query_time后,執(zhí)行sql語(yǔ)句的連接必須斷開(kāi)后再次連接mysql,設(shè)置的閾值才能起效

3) : 設(shè)置slow_query_log=1開(kāi)啟了慢查詢(xún)后只對(duì)當(dāng)前數(shù)據(jù)庫(kù)生效,如果MySQL重啟后則會(huì)失效。如果要永久生效,就必須修改配置文件my.cnf(其它系統(tǒng)變量也是如此)

3. 測(cè)試慢sql語(yǔ)句,查看慢日志

mysql> select sleep(2); +----------+ | sleep(2) | +----------+ | 0 | +----------+ 1 row in set (2.01 sec)

select sleep(2);表執(zhí)行暫停2秒的sql語(yǔ)句

然后我們打開(kāi)慢日志文件,也就是slow_query_log_file的值,即/var/lib/mysql/kickseed-slow.log文件,跳轉(zhuǎn)到最后可以看到如下內(nèi)容

# Time: 2021-02-23T11:38:25.222093Z # User@Host: root[root] @ localhost [127.0.0.1] Id: 19 # Query_time: 2.000681 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 1 SET timestamp=1614080303; select sleep(2);

Time:Time: 2021-02-23T11:38:25.222093Z 表該條慢sql執(zhí)行的時(shí)間點(diǎn)

User@Host: root[root] @ localhost [127.0.0.1] ?Id: 19 表該條慢sql的連接賬號(hào)為root,IP地址為127.0.0.1,Id表連接ID,每次連接該ID加1

Query_time: 2.000681? 表執(zhí)行該sql的總時(shí)間為2.000681秒

Lock_time: 0.000000? 表鎖表時(shí)間

Rows_sent: 1 表發(fā)送sql結(jié)果的行數(shù),只有1行

Rows_examined: 1 表執(zhí)行該sql語(yǔ)句檢查數(shù)據(jù)庫(kù)的行數(shù)

4. 系統(tǒng)變量?log_output,?log-queries-not-using-indexes,?log_slow_admin_statements的作用

log_output='FILE'表示將日志存入文件,默認(rèn)值是'FILE'。log_output='TABLE'表示將日志存入數(shù)據(jù)庫(kù),這樣日志信息就會(huì)被寫(xiě)入到mysql.slow_log表中。MySQL數(shù)據(jù)庫(kù)支持同時(shí)兩種日志存儲(chǔ)方式,配置的時(shí)候以逗號(hào)隔開(kāi)即可,如:log_output='FILE,TABLE'。日志記錄到系統(tǒng)的專(zhuān)用日志表中,要比記錄到文件耗費(fèi)更多的系統(tǒng)資源,因此對(duì)于需要啟用慢查詢(xún)?nèi)罩?#xff0c;又需要能夠獲得更高的系統(tǒng)性能,那么建議優(yōu)先記錄到文件

mysql> show variables like '%log_output%'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_output | FILE | +---------------+-------+ 1 row in set (0.01 sec)

log-queries-not-using-indexes:未使用索引的查詢(xún)也被記錄到慢查詢(xún)?nèi)罩局?#xff08;可選項(xiàng))。如果調(diào)優(yōu)的話(huà),建議開(kāi)啟這個(gè)選項(xiàng)。另外,開(kāi)啟了這個(gè)參數(shù),其實(shí)使用full index scan的sql也會(huì)被記錄到慢查詢(xún)?nèi)罩?/p> mysql> show variables like 'log_queries_not_using_indexes'; +-------------------------------+-------+ | Variable_name | Value | +-------------------------------+-------+ | log_queries_not_using_indexes | OFF | +-------------------------------+-------+ 1 row in set (0.01 sec)

log_slow_admin_statements表示是否將慢管理語(yǔ)句例如ANALYZE TABLE和ALTER TABLE等記入慢查詢(xún)?nèi)罩?/p> mysql> show variables like 'log_slow_admin_statements'; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | log_slow_admin_statements | OFF | +---------------------------+-------+ 1 row in set (0.01 sec)

5.?日志分析工具mysqldumpslow,mysql官方自帶的,只要安裝了mysql就可以使用它,可以用來(lái)幫助我們分析慢日志文件

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

root@kickseed:/home# 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 defaultal: average lock timear: average rows sentat: average query timec: countl: lock timer: rows sentt: 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

-s? 是表示按照何種方式排序,后面可以帶如下排序方式

c: 訪問(wèn)次數(shù)

l: 鎖定時(shí)間

r: 返回記錄的行數(shù)

t: 查詢(xún)時(shí)間

al:平均鎖定時(shí)間

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

at:平均查詢(xún)時(shí)間

-t? 是top n的意思,即為返回前面多少條的數(shù)據(jù)

-g? 后邊可以寫(xiě)一個(gè)正則匹配模式,大小寫(xiě)不敏感的

例子

得到返回記錄行數(shù)最多的10條SQL語(yǔ)句(行數(shù)最多排序需要 -s r ;限制10條需要 -t 10

mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log

得到訪問(wèn)次數(shù)最多的10個(gè)SQL(訪問(wèn)次數(shù)最多排序需要 -s c?;限制10條需要 -t 10

mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log

得到按照?qǐng)?zhí)行時(shí)間排序的前10條,且sql語(yǔ)句里面含有左連接的查詢(xún)語(yǔ)句(執(zhí)行時(shí)間排序需要 -s t;限制10條需要 -t 10

mysqldumpslow -s t -t 10 -g “l(fā)eft join” /database/mysql/mysql06_slow.log

另外建議在使用這些命令時(shí)結(jié)合 | 和more 使用 ,否則有可能出現(xiàn)刷屏的情況。

mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more

筆者以自己的慢日志為例,做一次查詢(xún)

mysqldumpslow -s t -t 5 kickseed-slow.log 表我要分析kickseed-slow.log文件,該文件是mysql的慢日志文件,得到按照?qǐng)?zhí)行時(shí)間,從大到小排序,最多5條sql語(yǔ)句

root@kickseed:/var/lib/mysql# mysqldumpslow -s t -t 5 kickseed-slow.log Reading mysql slow query log from kickseed-slow.log Count: 2 Time=2.00s (4s) Lock=0.00s (0s) Rows=1.0 (2), root[root]@localhostselect sleep(N)Count: 3 Time=0.21s (0s) Lock=0.00s (0s) Rows=25.0 (75), root[root]@[192.168.54.28]SHOW TABLE STATUS FROM `hyj_player`Count: 1 Time=0.21s (0s) Lock=0.00s (0s) Rows=23211.0 (23211), root[root]@[192.168.54.28]SELECT * FROM `hyj_player`.`t_player_basic_data` LIMIT N, NCount: 1 Time=0.20s (0s) Lock=0.00s (0s) Rows=24211.0 (24211), root[root]@[192.168.54.28]SELECT * FROM t_player_basic_dataCount: 4 Time=0.02s (0s) Lock=0.00s (0s) Rows=1.0 (4), root[root]@[192.168.54.28]SELECT COUNT(*) FROM t_player_basic_data WHERE playerID < N

從返回的結(jié)果中可以看到,從最大耗時(shí)的2秒,到最小耗時(shí)的0.02秒,一共5條記錄

總結(jié)

以上是生活随笔為你收集整理的mysql之慢查询详解,mysqldumpslow的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

主站蜘蛛池模板: av私库| 久久免费公开视频 | 精品国产va久久久久久久 | 精品欧美一区二区精品久久 | 亚洲av成人无码一二三在线观看 | 黑人巨大精品欧美一区二区蜜桃 | 久久精品国产亚洲7777 | 日本一区免费 | 亚洲蜜臀av一区二区三区 | 91搞| 粉色午夜视频 | 亚洲自拍av在线 | 国产精品视频全国免费观看 | 国产亚州av| 超碰人人艹 | 992在线观看 | 亚洲国产aⅴ精品一区二区的游戏 | 亚洲精品人妻无码 | 免费看aaaaa级少淫片 | 日韩av导航 | 蜜桃视频一区二区三区在线观看 | 久久久天天 | 国产综合激情 | 911看片 | 精品国产一级片 | 精品国产二区三区 | 日本在线中文字幕专区 | 亚洲AV蜜桃永久无码精品性色 | 国产精品久久久久久久久晋中 | 亚洲在线观看免费视频 | 日韩av在线播放一区 | 国产精品1区2区 | www.日本高清 | 亚洲www在线 | a爱视频 | 色综合av综合无码综合网站 | 国产黄色大片免费看 | 91久久伊人| 18国产免费视频 | 能免费看av的网站 | 久久久久久久久久国产精品 | 精品国产免费视频 | 无码人妻丰满熟妇区bbbbxxxx | 亚洲视频在线观看视频 | 久久精品国产露脸对白 | 亚洲视屏在线观看 | 欧美绿帽合集videosex | 国产一av | 日本涩涩网站 | 日韩精品人妻中文字幕有码 | 亚洲精品一区三区三区在线观看 | 国产精品久久久久999 | 欧洲精品一区二区 | www香蕉视频 | 精品一区二区三区视频 | 成人在线日韩 | 欧美三区在线观看 | 97成人资源 | 我爱av好色 | 老色鬼网站| 欧美成人国产va精品日本一级 | 永久免费看片在线播放 | 国产精品交换 | 麻豆资源| 黑人巨大国产9丨视频 | 亚洲成年人在线观看 | 国产chinese男男gaygay视频 | 免费在线不卡av | 欧美一区二区在线视频 | 欧美天天爽 | 黄色第一网站 | 闫嫩的18sex少妇hd | 成年人在线视频免费观看 | 精品白浆 | 中文字幕一区二 | 丰满雪白极品少妇流白浆 | 草民午夜理伦三级 | 伊人久久大香线蕉 | 日本肉体xxxⅹ裸体交 | 粉嫩av| 性xxx18| 欧美日韩专区 | 美日韩精品一区二区 | 久久亚洲综合国产精品99麻豆精品福利 | 欧美韩一区二区 | 亚洲精品一区三区三区在线观看 | 啪啪.com| 狠狠人妻久久久久久综合 | 欧美国产精品一区二区 | 亚洲女同在线 | 91全免费 | 在线播放毛片 | 污视频在线播放 | 最新国产精品自拍 | 国产成人av一区二区三区在线观看 | 日韩伊人久久 | 色站综合 | 麻豆三级在线观看 | 久久狠狠干 |