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

MySQL如何查看正在運(yùn)行的SQL詳解

 更新時(shí)間:2023年01月12日 13:06:38   作者:壹升茉莉清  
在項(xiàng)目開(kāi)發(fā)里面總是要查看后臺(tái)執(zhí)行的sql語(yǔ)句,mysql數(shù)據(jù)庫(kù)也不例外,下面這篇文章主要給大家介紹了關(guān)于MySQL如何查看正在運(yùn)行的SQL的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下

前言

? 在安裝MySQL的時(shí)候會(huì)默認(rèn)初始化幾個(gè)MySQL運(yùn)行所需的數(shù)據(jù)庫(kù):mysql, sys, information_schema, performance_schema.這幾個(gè)庫(kù)存儲(chǔ)了MySQL在運(yùn)行過(guò)程中的配置信息,運(yùn)行信息,參數(shù)配置,數(shù)據(jù)庫(kù)信息,表信息等等。今天這個(gè)要查看正在運(yùn)行的SQL主要用到的是information_schema和performance_schema這兩個(gè)庫(kù)。

processlist

processlist表位于information_schema庫(kù)中,主要是存儲(chǔ)的MySQL線程的一些基本信息。我們使用

desc information_schema.processlist來(lái)查看表結(jié)構(gòu):

  • ID: 線程的id
  • USER: 線程屬于哪一個(gè)用戶
  • HOST:客戶端的host信息:hostname+端口
  • DB:線程在哪一個(gè)數(shù)據(jù)庫(kù)下
  • COMMAND:線程使用哪一種命令在執(zhí)行,空閑的線程狀態(tài)為sleep
  • TIME:線程已經(jīng)運(yùn)行的時(shí)間,秒為單位
  • STATE:線程正在做什么:當(dāng)前的狀態(tài),行為,或者事件
  • INFO:線程正在執(zhí)行的語(yǔ)句,但是這個(gè)并不是很準(zhǔn)確,所以需要使用其他的方式來(lái)完成我們的目標(biāo)。

使用show processlist 或者 select * from information_schema.processlist查看processlist表

threads

threads 位于performance_schema庫(kù)中,每一行記錄的是一條服務(wù)器線程。當(dāng)performance_schema初始化的時(shí)候,它會(huì)根據(jù)當(dāng)時(shí)存在的線程填充線程表,之后每當(dāng)服務(wù)器創(chuàng)建線程時(shí),都會(huì)添加一條新數(shù)據(jù)。當(dāng)線程結(jié)束線程表中也會(huì)刪除這條數(shù)據(jù)。使用 desc performance_schema.threads 來(lái)查看表結(jié)構(gòu):

  • THREAD_ID:線程唯一id
  • NAME:與服務(wù)器中的線程監(jiān)測(cè)代碼相關(guān)聯(lián)的名稱
  • TYPE:線程類型。分為前臺(tái)和后臺(tái)。用戶連線程是前臺(tái)線程,與內(nèi)部服務(wù)器活動(dòng)相關(guān)的線程是后端線程。例如InnoDB內(nèi)部線程。
  • PROCESSLIST_ID:上邊的processlist的id
  • PROCESSLIST_USER:上邊的processlist的user
  • PROCESSLIST_HOST:上邊的processlist的host
  • PROCESSLIST_DB:上邊的processlist的DB
  • PROCESSLIST_COMMAND:上邊的processlist的COMMAND
  • PROCESSLIST_TIME:上邊的processlist的TIME
  • PROCESSLIST_STATE:上邊的processlist的STATE
  • PROCESSLIST_INFO:上邊的processlist的INFO
  • PARENT_THREAD_ID:衍生線程的id值
  • ROLE:未使用
  • INSTRUMENTED:線程執(zhí)行的事件是否插裝,(YES or ON)
  • HISTORY:是否為線程記錄歷史事件
  • CONNECTION_TYPE:用于建立連接的協(xié)議,或者NULL用于后臺(tái)線程。
  • THREAD_OS_ID:MySQL線程對(duì)應(yīng)于操作系統(tǒng)的線程id

events_statements_current

events_statements_current 位于performance_schema庫(kù)中,它存儲(chǔ)的是當(dāng)前的語(yǔ)句事件,表為每個(gè)線程存儲(chǔ)一行,顯示賢臣哥最近監(jiān)視的語(yǔ)句事件的當(dāng)前狀態(tài)。使用desc performance_schema.events_statements_current查看表結(jié)構(gòu):

  • THREAD_ID:與事件關(guān)聯(lián)的線程id,與上邊threads的id對(duì)應(yīng)
  • EVENT_ID:事件啟動(dòng)時(shí)的線程當(dāng)前事件號(hào)

THREAD_ID和EVENT_ID一起標(biāo)志唯一一行,沒(méi)有兩行具有相同的鍵值對(duì)

  • END_EVENT_ID:在事件開(kāi)始時(shí)設(shè)置null,并在事件結(jié)束時(shí)更新為線程當(dāng)前事件號(hào)
  • EVENT_NAME:事件的名稱
  • SOURCE:包含生成事件的監(jiān)測(cè)代碼的源文件名稱和監(jiān)測(cè)發(fā)生所在文件的行號(hào)
  • TIMER_START,TIMER_END,TIMER_WAIT:事件的時(shí)間信息,開(kāi)始時(shí)間,結(jié)束時(shí)間,事件的運(yùn)行時(shí)間,單位是皮秒(萬(wàn)分之一秒)。
  • LOCK_TIME:等待表鎖花費(fèi)的時(shí)間。微妙為單位
  • SQL_TEXT:SQL語(yǔ)句的文本,對(duì)于沒(méi)有關(guān)聯(lián)SQL語(yǔ)句的命令為null
  • DIGEST:MD5的32個(gè)字符
  • DIGEST_TEXT:規(guī)范化語(yǔ)句摘要文本。
  • CURRENT_SCHEMA:語(yǔ)句的默認(rèn)數(shù)據(jù)庫(kù)
  • OBJECT_TYPE,OBJECT_SCHEMA,OBJECT_NAME :對(duì)于嵌套語(yǔ)句這些列包含有關(guān)父語(yǔ)句的信息
  • OBJECT_INSTANCE_BEGIN:語(yǔ)句在內(nèi)存的對(duì)象地址
  • MYSQL_ERRNO:語(yǔ)句錯(cuò)誤號(hào)
  • RETURNED_SQLSTATE:sql狀態(tài)返回
  • MESSAGE_TEXT:錯(cuò)誤信息
  • ERRORS:該語(yǔ)句是否發(fā)生錯(cuò)誤。
  • WARNINGS:警告次數(shù)
  • ROWS_AFFECTED:受語(yǔ)句影響的行數(shù)
  • ROWS_SENT:語(yǔ)句返回的行數(shù)
  • ROWS_EXAMINED:服務(wù)器層檢查的行數(shù)
    • CREATED_TMP_DISK_TABLES
    • CREATED_TMP_TABLES
    • SELECT_FULL_JOIN
    • SELECT_FULL_RANGE_JOIN
    • SELECT_RANGE
    • SELECT_RANGE_CHECK
    • SELECT_SCAN
    • SORT_MERGE_PASSES
    • SORT_RANGE
    • SORT_ROWS
    • SORT_SCAN
    • NO_INDEX_USED
    • NO_GOOD_INDEX_USED
    • NESTING_EVENT_ID
    • NESTING_EVENT_TYPE
    • NESTING_EVENT_LEVEL

如何查看正在運(yùn)行的SQL

1、processlist表記錄的是MySQL正在運(yùn)行的線程信息,而每一個(gè)線程在threads表中都有用線程的一個(gè)唯一id >>> thread_id。events_statements_current表中記錄著唯一線程id和該線程對(duì)應(yīng)的SQL語(yǔ)句sql_text.

2、所以我們可以先在processlist拿到processlist對(duì)應(yīng)的id

3、通過(guò)threads表的字段分析,我們之后一個(gè)processlist_id和thread_id一一對(duì)應(yīng),所以之后在threads表中通過(guò)processlist_id拿到thread_id

4、最后一步就是關(guān)鍵,我們通過(guò)thread_id在events_statements_current表中拿到sql_text,也就是我們需要拿到的sql語(yǔ)句。

拿到正在執(zhí)行的processlist_id

select id from information_schema.processlist

拿到與processlist_id對(duì)應(yīng)的thread_id

select thread_id from performance_schema.threads where processlist_id in (上一步拿到的processlist_id列表)

拿到正在執(zhí)行的sql語(yǔ)句

select thread_id, sql_text from performance_schema.events_statements_current where thread_id in (上一步拿到的thread_id列表)

完整SQL

SELECT a.*, c.thread_id, c.sql_text from information_schema.processlist a
LEFT JOIN performance_schema.threads b on a.id = b.PROCESSLIST_ID
LEFT JOIN performance_schema.events_statements_current c on c.THREAD_ID = b.THREAD_ID

總結(jié)

到此這篇關(guān)于MySQL如何查看正在運(yùn)行的SQL的文章就介紹到這了,更多相關(guān)MySQL查看正在運(yùn)行SQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中@i:=@i+1表達(dá)式用法詳解

    MySQL中@i:=@i+1表達(dá)式用法詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中@i:=@i+1表達(dá)式用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • MySQL 觸發(fā)器的使用和理解

    MySQL 觸發(fā)器的使用和理解

    這篇文章主要介紹了MySQL 觸發(fā)器的使用和理解,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-02-02
  • Mysql如何刪除數(shù)據(jù)庫(kù)表中的某一列

    Mysql如何刪除數(shù)據(jù)庫(kù)表中的某一列

    這篇文章主要介紹了Mysql如何刪除數(shù)據(jù)庫(kù)表中的某一列,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Mysql并發(fā)常見(jiàn)的死鎖及解決方法

    Mysql并發(fā)常見(jiàn)的死鎖及解決方法

    死鎖是在并發(fā)執(zhí)行的過(guò)程中,兩個(gè)或多個(gè)事務(wù)相互等待對(duì)方釋放資源的情況,本文主要介紹了Mysql并發(fā)常見(jiàn)的死鎖及解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • mysql 8.0.15 winx64安裝配置方法圖文教程

    mysql 8.0.15 winx64安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.15 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Navicat中新建MySQL數(shù)據(jù)庫(kù)與新建、修改、刪除數(shù)據(jù)表及刪除數(shù)據(jù)庫(kù)詳細(xì)操作方法

    Navicat中新建MySQL數(shù)據(jù)庫(kù)與新建、修改、刪除數(shù)據(jù)表及刪除數(shù)據(jù)庫(kù)詳細(xì)操作方法

    Navicat是一套快速、可靠并價(jià)格相當(dāng)便宜的數(shù)據(jù)庫(kù)管理工具,專為簡(jiǎn)化數(shù)據(jù)庫(kù)的管理及降低系統(tǒng)管理成本而設(shè),這篇文章主要給大家介紹了關(guān)于Navicat中新建MySQL數(shù)據(jù)庫(kù)與新建、修改、刪除數(shù)據(jù)表及刪除數(shù)據(jù)庫(kù)詳細(xì)操作的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • mysql存儲(chǔ)過(guò)程原理與使用方法詳解

    mysql存儲(chǔ)過(guò)程原理與使用方法詳解

    這篇文章主要介紹了mysql存儲(chǔ)過(guò)程原理與使用方法,結(jié)合實(shí)例形式詳細(xì)分析了mysql存儲(chǔ)過(guò)程的優(yōu)缺點(diǎn)、定義、調(diào)用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • CentOS下徹底卸載mysql的方法

    CentOS下徹底卸載mysql的方法

    這篇文章主要為大家詳細(xì)介紹了CentOS下徹底卸載mysql的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • mysql server 8.0.3安裝配置方法圖文教程

    mysql server 8.0.3安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql server 8.0.3安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Mysql查看最大連接數(shù)和修改最大連接數(shù)的講解

    Mysql查看最大連接數(shù)和修改最大連接數(shù)的講解

    今天小編就為大家分享一篇關(guān)于Mysql查看最大連接數(shù)和修改最大連接數(shù)的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03

最新評(píng)論

延边| 锡林浩特市| 山西省| 通榆县| 达日县| 开化县| 建昌县| 蓝山县| 阳西县| 湘阴县| 西华县| 莒南县| 兴隆县| 大荔县| 始兴县| 河北省| 兴仁县| 玉山县| 桦甸市| 石门县| 临猗县| 兰考县| 靖州| 辽宁省| 屯留县| 漯河市| 武功县| 南阳市| 西华县| 巧家县| 仁怀市| 康乐县| 丰顺县| 永登县| 集贤县| 孙吴县| 木里| 铜川市| 北宁市| 昌江| 靖西县|