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

歡迎訪問 生活随笔!

生活随笔

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

数据库

面试mysql慢查询_剑指Offer面试题:如何定位并优化慢查询sql

發(fā)布時(shí)間:2025/3/19 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试mysql慢查询_剑指Offer面试题:如何定位并优化慢查询sql 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.根據(jù)慢日志定位慢查詢sql

使用以下命令查看相關(guān)系統(tǒng)變量屬性:

show variables like '%query%';

主要看這三個(gè)屬性:

long_query_time : 10.000000:查詢超過10秒被定義為慢語(yǔ)句

slow_query_log : OFF:是否打開慢查詢?nèi)罩?/p>

slow_query_log_file : /usr/local/mysql/data/slow.sql:慢查詢文件所在位置

使用以下命令設(shè)置這些屬性值:

set global slow_query_log = ON; # 打開慢查詢?nèi)罩?/p>

set global long_query_time = 1; # 超過1秒的語(yǔ)句被定義為慢語(yǔ)句,注意設(shè)置了之后需要重新連接才有效

使用以下命令查詢慢查詢?nèi)罩镜臄?shù)量:

show status like '%slow_queries%';

要查看慢日志,直接打開 slow.sql 文件查看即可:

sudo vim /usr/local/mysql/data/slow.sql

2.使用 explain 等工具分析sql

查詢出慢語(yǔ)句后可以通過 explain 工具分析sql:

explain select name from person_info_large order by name desc;

查詢結(jié)果:

balabala...

這里主要注意這幾個(gè)字段:

type: 表示mysql找到數(shù)據(jù)行的方式,性能從最優(yōu)到最差排序如下,如果出現(xiàn) index 或者 all 就需要注意優(yōu)化了。

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all

extra: extra中出現(xiàn)以下兩項(xiàng)意味著mysql不能使用索引,效率會(huì)受到重大影響,應(yīng)當(dāng)盡可能優(yōu)化。

Using filesort:表示mysql會(huì)對(duì)結(jié)果使用一個(gè)外部索引排序,而不是從表里按索引次序讀到相關(guān)內(nèi)容。可能在磁盤或是在內(nèi)存上排序。Mysql中無(wú)法利用索引完成的排序操作稱為“文件排序”。

Using temporary:表示mysql在對(duì)查詢結(jié)果排序時(shí)使用了臨時(shí)表。常見于排序和分組查詢。

3.修改 sql 或者盡量讓 sql 走索引

這一步具體語(yǔ)句具體分析了,主要就是要么使用索引要么修改sql邏輯,還要注意是否語(yǔ)句會(huì)走錯(cuò)索引,因?yàn)閙ysql查詢優(yōu)化器會(huì)誤使用非預(yù)期索引導(dǎo)致語(yǔ)句查詢緩慢,這時(shí)候需要修改sql邏輯引導(dǎo)優(yōu)化器使用正確的索引,或者強(qiáng)制(force index)使用我們預(yù)期的索引。

總結(jié)

以上是生活随笔為你收集整理的面试mysql慢查询_剑指Offer面试题:如何定位并优化慢查询sql的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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