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

MySQL慢查詢?nèi)绾味ㄎ辉斀?/h1>
 更新時(shí)間:2020年11月24日 12:02:28   作者:武培軒  
這篇文章主要給大家介紹了關(guān)于MySQL慢查詢?nèi)绾味ㄎ坏南嚓P(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

相信大家在平時(shí)工作中都有過(guò) SQL 優(yōu)化經(jīng)歷,那么在優(yōu)化前就必須找到慢 SQL 方可進(jìn)行分析。這篇文章就介紹下如何定位到慢查詢。

慢查詢?nèi)罩臼?MySQL 內(nèi)置的一項(xiàng)功能,可以記錄執(zhí)行超過(guò)指定時(shí)間的 SQL 語(yǔ)句。

以下是慢查詢的相關(guān)參數(shù),大家感興趣的可以看下:


參數(shù) 含義
log_output 日志輸出位置,默認(rèn)為 FILE,即保存為文件,若設(shè)置為 TABLE,則將日志記錄到 mysql.show_log 表中,支持設(shè)置多種格式
slow_query_log_file 指定慢查詢?nèi)罩疚募穆窂胶兔郑墒褂媒^對(duì)路徑指定,默認(rèn)值是主機(jī)名-slow.log,位于配置的 datadir 目錄
long_query_time 執(zhí)行時(shí)間超過(guò)該值才記錄到慢查詢?nèi)罩?,單位為秒,默認(rèn)為 10
min_examined_row_limit 對(duì)于查詢掃描行數(shù)小于此參數(shù)的SQL,將不會(huì)記錄到慢查詢?nèi)罩局校J(rèn)為 0
log_queries_not_using_indexes 是否將未使用索引的 SQL 記錄到慢查詢?nèi)罩局?,開(kāi)啟此配置后會(huì)無(wú)視 long_query_time 參數(shù),默認(rèn)為 OFF
log_throttle_queries_not_using_indexes 設(shè)定每分鐘記錄到日志的未使用索引的語(yǔ)句數(shù)目,超過(guò)這個(gè)數(shù)目后只記錄語(yǔ)句數(shù)量和花費(fèi)的總時(shí)間,默認(rèn)為 0
log-slow-admin-statements 記錄執(zhí)行緩慢的管理 SQL,如 ALTER TABLE、ANALYZE TABLE、CHECK TABLE、CREATE INDEX、DROP INDEX、OPTIMIZE TABLE 和 REPAIR TABLE,默認(rèn)為 OFF
log_slow_slave_statements 記錄從庫(kù)上執(zhí)行的慢查詢語(yǔ)句,如果 binlog 的值為 row,則失效,默認(rèn)為 OFF

開(kāi)啟慢查詢

有兩種方式可以開(kāi)啟慢查詢

  1. 修改配置文件
  2. 設(shè)置全局變量

方式一需要修改配置文件 my.ini,在[mysqld]段落中加入如下參數(shù):

[mysqld]
log_output='FILE,TABLE'
slow_query_log='ON'
long_query_time=0.001

然后需要重啟 MySQL 才可以生效,命令為 service mysqld restart

方式二無(wú)需重啟即可生效,但是重啟會(huì)導(dǎo)致設(shè)置失效,設(shè)置的命令如下所示:

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL log_output = 'FILE,TABLE';
SET GLOBAL long_query_time = 0.001;

這樣就可以將慢查詢?nèi)罩就瑫r(shí)記錄在文件以及 mysql.slow_log 表中。

通過(guò)第二種方式開(kāi)啟慢查詢?nèi)罩?,然后使用全表查詢語(yǔ)句 SELECT * FROM user

然后再查詢慢查詢?nèi)罩荆?code>SELECT * FROM mysql.slow_log,可以發(fā)現(xiàn)其中有這樣一條記錄:


slow_log

其中,start_time 為執(zhí)行時(shí)間,user_host 為用戶的主機(jī)名,query_time 為查詢所花費(fèi)的時(shí)間,lock_time 為該查詢使用鎖的時(shí)間,rows_sent 為這條查詢返回了多少數(shù)據(jù)給客戶端,rows_examined 表示這條語(yǔ)句掃描了多少行,db 為數(shù)據(jù)庫(kù),sql_text 為這條 SQL,thread_id 為執(zhí)行這條查詢的線程 id。

這樣我們就可以通過(guò) slow_log 表的數(shù)據(jù)進(jìn)行分析,然后對(duì) SQL 進(jìn)行調(diào)優(yōu)了。

以上是通過(guò) Table 來(lái)進(jìn)行分析的,下面來(lái)通過(guò)文件的慢查詢是怎么樣的。

如果不知道文件保存在哪里,可以使用 SHOW VARIABLES LIKE '%slow_query_log_file%' 來(lái)查看文件保存位置,打開(kāi)慢查詢?nèi)罩疚募?,可以看出每五行表示一個(gè)慢 SQL,這樣查看比較費(fèi)事,可以使用一些工具來(lái)查看。


慢查詢?nèi)罩疚募?/p>

mysqldumpslow

MySQL 內(nèi)置了 mysqldumpslow 這個(gè)工具來(lái)幫助我們分析慢查詢?nèi)罩疚募琖indows 環(huán)境下使用該工具需要安裝 Perl 環(huán)境。

可以通過(guò) -help 來(lái)查看它的命令參數(shù):


mysqldumpslow help

比如我們可以通過(guò) mysqldumpslow -s t 10 LAPTOP-8817LKVE-slow.log 命令得到按照查詢時(shí)間排序的 10 條 SQL 。


mysqldumpslow 結(jié)果

pt-query-digest

除此之外還有 pt-query-digest,這個(gè)是 Percona Toolkit 中的工具之一,下載地址:https://www.percona.com/downloads/percona-toolkit/LATEST/,如果是 Windows 系統(tǒng),可以在安裝 Perl 的環(huán)境下,把腳本下載下來(lái):https://raw.githubusercontent.com/percona/percona-toolkit/3.x/bin/pt-query-digest

下面先對(duì) pt-query-digest 進(jìn)行簡(jiǎn)單的介紹:

pt-query-digest 是用于分析 MySQL 慢查詢的一個(gè)第三方工具,可以分析 binlog、General log 和 slowlog,也可以通過(guò) showprocesslist 或者通過(guò) tcpdump 抓取的 MySQL 協(xié)議數(shù)據(jù)來(lái)進(jìn)行分析,可以把分析結(jié)果輸出到文件中,分析過(guò)程是先對(duì)查詢語(yǔ)句的條件進(jìn)行參數(shù)化,然后對(duì)參數(shù)化以后的查詢進(jìn)行分組統(tǒng)計(jì),統(tǒng)計(jì)出各查詢的執(zhí)行時(shí)間、次數(shù)、占比等,可以借助分析結(jié)果找出問(wèn)題進(jìn)行優(yōu)化。

有興趣的可以先下載下來(lái)自己玩玩,將在后續(xù)的文章中對(duì) pt-query-digest 工具進(jìn)行詳細(xì)介紹。

show processlist

還有種情況是慢查詢還在執(zhí)行中,慢查詢?nèi)罩纠锸钦也坏铰?SQL 呢,這個(gè)時(shí)候可以用 show processlist 命令來(lái)尋找慢查詢,該命令可以顯示正在運(yùn)行的線程,執(zhí)行結(jié)果如下圖所示,可以根據(jù) Time 的大小來(lái)判斷是否為慢查詢。


show processlist

總結(jié)

這篇文章主要講解了如何定位慢查詢以及簡(jiǎn)單介紹了 mysqldumpslow 和 pt-query-digest 工具,后續(xù)還會(huì)講解 explain 和 show profile 以及 trace 等常用的方法。

你在定位慢查詢或者優(yōu)化 SQL 時(shí),都會(huì)用到哪些方法呢?

到此這篇關(guān)于MySQL慢查詢?nèi)绾味ㄎ坏奈恼戮徒榻B到這了,更多相關(guān)MySQL慢查詢定位內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

參考文檔

https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html

相關(guān)文章

  • Linux下編譯安裝Mysql 5.5的簡(jiǎn)單步驟

    Linux下編譯安裝Mysql 5.5的簡(jiǎn)單步驟

    Linux下面因?yàn)閺腗ySQL 5.5開(kāi)始使用cmake來(lái)做config了,所以編譯安裝的會(huì)和5.1版本有些區(qū)別。不過(guò)總體來(lái)說(shuō)還是差別不大
    2015-08-08
  • 一條sql詳解MYSQL的架構(gòu)設(shè)計(jì)詳情

    一條sql詳解MYSQL的架構(gòu)設(shè)計(jì)詳情

    這篇文章主要介紹了一條sql詳解MYSQL的架構(gòu)設(shè)計(jì)詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • mysql關(guān)聯(lián)子查詢的一種優(yōu)化方法分析

    mysql關(guān)聯(lián)子查詢的一種優(yōu)化方法分析

    這篇文章主要介紹了mysql關(guān)聯(lián)子查詢的一種優(yōu)化方法,結(jié)合實(shí)例形式分析了針對(duì)MySQL的關(guān)聯(lián)子查詢進(jìn)行優(yōu)化的技巧,需要的朋友可以參考下
    2016-04-04
  • 安裝mysql出錯(cuò)”A Windows service with the name MySQL already exists.“如何解決

    安裝mysql出錯(cuò)”A Windows service with the name MySQL already exis

    這篇文章主要介紹了安裝mysql出錯(cuò)”A Windows service with the name MySQL already exists.“如何解決的相關(guān)資料,在日常項(xiàng)目中此問(wèn)題比較多見(jiàn),特此把解決辦法分享給大家,供大家參考
    2016-05-05
  • mysql和sqlserver查詢數(shù)據(jù)庫(kù)表的數(shù)量方法詳解

    mysql和sqlserver查詢數(shù)據(jù)庫(kù)表的數(shù)量方法詳解

    這篇文章主要介紹了mysql和sqlserver查詢數(shù)據(jù)庫(kù)表的數(shù)量方法詳解,本文給大家分享SQL語(yǔ)句寫(xiě)法,文末補(bǔ)充介紹了查詢sqlserver 數(shù)據(jù)庫(kù)中各表?xiàng)l數(shù)的語(yǔ)句,需要的朋友可以參考下
    2023-07-07
  • MySQL子查詢操作實(shí)例詳解

    MySQL子查詢操作實(shí)例詳解

    這篇文章主要介紹了MySQL子查詢操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了mysql表的創(chuàng)建、常見(jiàn)子查詢運(yùn)算與關(guān)鍵字使用技巧,需要的朋友可以參考下
    2018-06-06
  • Mysql Sql語(yǔ)句注釋大全

    Mysql Sql語(yǔ)句注釋大全

    這篇文章主要介紹了Mysql Sql語(yǔ)句注釋大全,需要的朋友可以參考下
    2017-07-07
  • 淺談MySQL存儲(chǔ)過(guò)程中declare和set定義變量的區(qū)別

    淺談MySQL存儲(chǔ)過(guò)程中declare和set定義變量的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談MySQL存儲(chǔ)過(guò)程中declare和set定義變量的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • SQL函數(shù)實(shí)現(xiàn)Group_concat用法

    SQL函數(shù)實(shí)現(xiàn)Group_concat用法

    GROUP_CONCAT用于將每個(gè)分組內(nèi)的值連接成一個(gè)字符串,并通過(guò)指定的分隔符進(jìn)行分隔,本文主要介紹了SQL函數(shù)實(shí)現(xiàn)Group_concat用法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • mysql單字段多值分割和合并的處理方法

    mysql單字段多值分割和合并的處理方法

    這篇文章主要給大家介紹了關(guān)于mysql單字段多值分割和合并的處理方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論

和平县| 宁陵县| 新泰市| 邵阳市| 阿瓦提县| 桃源县| 玉龙| 崇仁县| 凤翔县| 麦盖提县| 铁岭县| 建阳市| 马山县| 日喀则市| 海兴县| 泰和县| 潜山县| 阳山县| 宜章县| 郴州市| 广饶县| 龙山县| 丰顺县| 江达县| 盐源县| 宁都县| 东海县| 观塘区| 米林县| 新干县| 乐亭县| 广汉市| 旌德县| 广河县| 定西市| 中江县| 盖州市| 昆明市| 昆山市| 青海省| 孙吴县|