欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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線(xiàn)程的一些基本信息。我們使用

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

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

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

threads

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

  • THREAD_ID:線(xiàn)程唯一id
  • NAME:與服務(wù)器中的線(xiàn)程監(jiān)測(cè)代碼相關(guān)聯(lián)的名稱(chēng)
  • TYPE:線(xiàn)程類(lèi)型。分為前臺(tái)和后臺(tái)。用戶(hù)連線(xiàn)程是前臺(tái)線(xiàn)程,與內(nèi)部服務(wù)器活動(dòng)相關(guān)的線(xiàn)程是后端線(xiàn)程。例如InnoDB內(nèi)部線(xiàn)程。
  • 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:衍生線(xiàn)程的id值
  • ROLE:未使用
  • INSTRUMENTED:線(xiàn)程執(zhí)行的事件是否插裝,(YES or ON)
  • HISTORY:是否為線(xiàn)程記錄歷史事件
  • CONNECTION_TYPE:用于建立連接的協(xié)議,或者NULL用于后臺(tái)線(xiàn)程。
  • THREAD_OS_ID:MySQL線(xiàn)程對(duì)應(yīng)于操作系統(tǒng)的線(xiàn)程id

events_statements_current

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

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

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

  • END_EVENT_ID:在事件開(kāi)始時(shí)設(shè)置null,并在事件結(jié)束時(shí)更新為線(xiàn)程當(dāng)前事件號(hào)
  • EVENT_NAME:事件的名稱(chēng)
  • SOURCE:包含生成事件的監(jiān)測(cè)代碼的源文件名稱(chēng)和監(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)行的線(xiàn)程信息,而每一個(gè)線(xiàn)程在threads表中都有用線(xiàn)程的一個(gè)唯一id >>> thread_id。events_statements_current表中記錄著唯一線(xiàn)程id和該線(xiàn)程對(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動(dòng)態(tài)字符串處理DYNAMIC_STRING

    MySQL動(dòng)態(tài)字符串處理DYNAMIC_STRING

    本文主要給大家簡(jiǎn)單講解了mysql如何使用DYNAMIC_STRING來(lái)進(jìn)行動(dòng)態(tài)字符串的保存,非常的實(shí)用,有需要的小伙伴可以參考下
    2016-10-10
  • MySQL數(shù)據(jù)庫(kù)主從復(fù)制與讀寫(xiě)分離

    MySQL數(shù)據(jù)庫(kù)主從復(fù)制與讀寫(xiě)分離

    大家好,本篇文章主要講的是MySQL數(shù)據(jù)庫(kù)主從復(fù)制與讀寫(xiě)分離,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2021-12-12
  • MySQL最大連接數(shù)max_connections設(shè)置的兩種方法

    MySQL最大連接數(shù)max_connections設(shè)置的兩種方法

    MySQL的最大連接數(shù)可以通過(guò)兩種方法進(jìn)行設(shè)置,通過(guò)命令行臨時(shí)修改和通過(guò)配置文件永久修改這兩種方法,本文將通過(guò)代碼示例給大家詳細(xì)的講解一下這兩種方法,需要的朋友可以參考下
    2024-05-05
  • 開(kāi)啟MySQL的binlog日志的方法步驟

    開(kāi)啟MySQL的binlog日志的方法步驟

    這篇文章主要介紹了開(kāi)啟MySQL的binlog日志的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Mysql 聚合函數(shù)嵌套使用操作

    Mysql 聚合函數(shù)嵌套使用操作

    這篇文章主要介紹了Mysql 聚合函數(shù)嵌套使用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • MySQL模糊查找like通配符使用(小白入門(mén)篇)

    MySQL模糊查找like通配符使用(小白入門(mén)篇)

    這篇文章主要為大家介紹了MySQL模糊查找like通配符使用的小白入門(mén)篇學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • MySQL 5.7安裝后默認(rèn)登錄密碼的查看方法

    MySQL 5.7安裝后默認(rèn)登錄密碼的查看方法

    許多朋友安裝MySQL 5.7之后不知道默認(rèn)登錄密碼在哪里查看,本文小編將通過(guò)代碼示例和圖文結(jié)合的方式給大家介紹MySQL 5.7安裝后默認(rèn)登錄密碼的查看方法,需要的朋友可以參考下
    2023-12-12
  • MySQL如何使用使用Xtrabackup進(jìn)行備份和恢復(fù)

    MySQL如何使用使用Xtrabackup進(jìn)行備份和恢復(fù)

    Xtrabackup是由Percona開(kāi)發(fā)的一個(gè)開(kāi)源軟件,可實(shí)現(xiàn)對(duì)InnoDB的數(shù)據(jù)備份,支持在線(xiàn)熱備份(備份時(shí)不影響數(shù)據(jù)讀寫(xiě))。本文講解如何使用該工具進(jìn)行備份和恢復(fù)
    2021-06-06
  • mysql中的utf8與utf8mb4存儲(chǔ)及區(qū)別

    mysql中的utf8與utf8mb4存儲(chǔ)及區(qū)別

    本文主要介紹了mysql中的utf8與utf8mb4存儲(chǔ)及區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • mysql 實(shí)現(xiàn)互換表中兩列數(shù)據(jù)方法簡(jiǎn)單實(shí)例

    mysql 實(shí)現(xiàn)互換表中兩列數(shù)據(jù)方法簡(jiǎn)單實(shí)例

    這篇文章主要介紹了mysql 實(shí)現(xiàn)互換表中兩列數(shù)據(jù)方法簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評(píng)論