最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL執(zhí)行時(shí)間的查詢

 更新時(shí)間:2023年04月09日 14:03:08   作者:兜兜轉(zhuǎn)轉(zhuǎn)m  
這篇文章主要介紹了MySQL執(zhí)行時(shí)間的查詢,查詢頻繁的數(shù)據(jù)庫和查詢執(zhí)行時(shí)間長(zhǎng)的sql,文章中有詳細(xì)的代碼實(shí)例,感興趣的同學(xué)可以參考閱讀

上一節(jié)我們介紹了MySQL的索引,用于提高查詢效率。那么我們應(yīng)該優(yōu)化哪些庫的哪些sql呢?

答案1:肯定是查詢頻繁的數(shù)據(jù)庫查詢執(zhí)行時(shí)間長(zhǎng)的sql?,F(xiàn)在我們一一來解決這個(gè)問題。

  • 首先如何判斷一個(gè)數(shù)據(jù)庫是否是查詢頻繁呢?

 我們可以看它的狀態(tài)信息

SHOW GLOBAL STATUS LIKE 'Com_______';

 我們主要關(guān)注:

  • Com_delete: 刪除次數(shù) 
  • Com_insert: 插入次數(shù)
  • Com_select: 查詢次數(shù)
  • Com_update: 更新次數(shù)

 通過上述指令,我們可以查看到當(dāng)前數(shù)據(jù)庫到底是以查詢?yōu)橹鳎€是以增刪改為主,從而為數(shù)據(jù) 庫優(yōu)化提供參考依據(jù)。 如果是以增刪改為主,我們可以考慮不對(duì)其進(jìn)行索引的優(yōu)化。 如果是以 查詢?yōu)橹鳎敲淳鸵紤]對(duì)數(shù)據(jù)庫的索引進(jìn)行優(yōu)化了。

 我們又該如何定位針對(duì)于那些查詢語句進(jìn)行優(yōu)化呢? 我們可以借助于慢查詢?nèi)罩尽?/p>

慢查詢?nèi)罩?/h2>

慢查詢?nèi)罩居涗浟怂袌?zhí)行時(shí)間超過指定參數(shù)(long_query_time,單位:秒,默認(rèn)10秒)的所有 SQL語句的日志。

MySQL的慢查詢?nèi)罩灸J(rèn)沒有開啟,我們可以查看一下系統(tǒng)變量 slow_query_log = off

可以通過在配置文件最后增加這兩個(gè)配置信進(jìn)行打開,并且查詢時(shí)長(zhǎng)不能超過2秒。

# 開啟MySQL慢日志查詢開關(guān)
slow_query_log=1
# 設(shè)置慢日志的時(shí)間為2秒,SQL語句執(zhí)行時(shí)間超過2秒,就會(huì)視為慢查詢,記錄慢查詢?nèi)罩?
long_query_time=2

配置完畢之后,通過以下指令重新啟動(dòng)MySQL服務(wù)器進(jìn)行測(cè)試,查看慢日志文件中記錄的信息

然后,再次查看開關(guān)情況,慢查詢?nèi)罩揪鸵呀?jīng)打開了。

測(cè)試

執(zhí)行如下Sql,一個(gè)查詢耗時(shí)0.00033秒,一個(gè)耗時(shí)13.35秒

我們之前打開過檢查慢查詢?nèi)罩尽?/p>

最終我們發(fā)現(xiàn),在慢查詢?nèi)罩局?,只?huì)記錄執(zhí)行時(shí)間超多我們預(yù)設(shè)時(shí)間(2s)的SQL,執(zhí)行較快的SQL 是不會(huì)記錄的

然后在實(shí)際開發(fā)中,我們也會(huì)出現(xiàn)這個(gè)問題,我們寫的SQL邏輯并不復(fù)雜卻執(zhí)行了1.9s,這個(gè)sql就不會(huì)被慢查詢?nèi)罩居涗?,但是我們也?yīng)該對(duì)其進(jìn)行優(yōu)化。

profile

  • show profiles 能夠在做SQL優(yōu)化時(shí)幫助我們了解時(shí)間都耗費(fèi)到哪里去了。
  • 通過have_profiling 參數(shù),能夠看到當(dāng)前MySQL是否支持profile操作:

設(shè)置打開。

SET profiling = 1

開關(guān)已經(jīng)打開了,接下來,我們所執(zhí)行的SQL語句,都會(huì)被MySQL記錄,并記錄執(zhí)行時(shí)間消耗到哪兒去 了。 我們直接執(zhí)行如下的SQL語句:

select * from tb_user;
select * from tb_user where id = 1;
select * from tb_user where name = '白起';
select count(*) from tb_sku;

查看每一條SQL的耗時(shí)情況:

到這里,我們就可以結(jié)合慢查詢?nèi)罩竞蚿rofile來輔助分析sql的具體執(zhí)行時(shí)間。

總結(jié)

  • 慢sql查詢?nèi)罩拘薷呐渲梦募?,打開慢查詢?nèi)罩竞陀涗泂ql執(zhí)行的最長(zhǎng)時(shí)間。
  • profile記錄每條sql的執(zhí)行時(shí)間,需要進(jìn)行設(shè)置set profiling = 1;

 到此這篇關(guān)于MySQL執(zhí)行時(shí)間的查詢的文章就介紹到這了,更多相關(guān)MySQL時(shí)間的查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

日土县| 青浦区| 东台市| 宜城市| 莱阳市| 大理市| 漳平市| 鹤壁市| 大连市| 德昌县| 元朗区| 咸阳市| 宿松县| 越西县| 班玛县| 仙桃市| 丰宁| 安多县| 枞阳县| 泗阳县| 瓦房店市| 鹤庆县| 潼关县| 禹州市| 那坡县| 施甸县| 小金县| 涡阳县| 安阳市| 嘉峪关市| 桐城市| 青龙| 自治县| 景洪市| 北票市| 攀枝花市| 永春县| 固原市| 弥勒县| 阳曲县| 新乡县|