iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL查看正在运行的SQL
  • 914
分享到

MySQL查看正在运行的SQL

mysqlsql数据库 2023-09-14 10:09:15 914人浏览 安东尼
摘要

Mysql查看正在运行的sql 前言 ​ 在安装mysql的时候会默认初始化几个MySQL运行所需的数据库:mysql, sys, infORMation_schema, performance_schema.这几个库存储了MySQL在运行

Mysql查看正在运行的sql
前言
​ 在安装mysql的时候会默认初始化几个MySQL运行所需的数据库:mysql, sys, infORMation_schema, performance_schema.这几个库存储了MySQL在运行过程中的配置信息,运行信息,参数配置,数据库信息,表信息等等。今天这个要查看正在运行的SQL主要用到的是information_schema和performance_schema这两个库。

processlist
processlist表位于information_schema库中,主要是存储的MySQL线程的一些基本信息。我们使用

desc information_schema.processlist来查看表结构:

ID: 线程的id
USER: 线程属于哪一个用户
HOST:客户端的host信息:hostname+端口
DB:线程在哪一个数据库下
COMMAND:线程使用哪一种命令在执行,空闲的线程状态为sleep
TIME:线程已经运行的时间,秒为单位
STATE:线程正在做什么:当前的状态,行为,或者事件
INFO:线程正在执行的语句,但是这个并不是很准确,所以需要使用其他的方式来完成我们的目标。

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

threads
threads 位于performance_schema库中,每一行记录的是一条服务器线程。当performance_schema初始化的时候,它会根据当时存在的线程填充线程表,之后每当服务器创建线程时,都会添加一条新数据。当线程结束线程表中也会删除这条数据。使用 desc performance_schema.threads 来查看表结构:

THREAD_ID:线程唯一id
NAME:与服务器中的线程监测代码相关联的名称
TYPE:线程类型。分为前台和后台。用户连线程是前台线程,与内部服务器活动相关的线程是后端线程。例如InnoDB内部线程。
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:线程执行的事件是否插装,(YES or ON)
HISTORY:是否为线程记录历史事件
CONNECTION_TYPE:用于建立连接的协议,或者NULL用于后台线程。
THREAD_OS_ID:MySQL线程对应于操作系统的线程id

events_statements_current
events_statements_current 位于performance_schema库中,它存储的是当前的语句事件,表为每个线程存储一行,显示贤臣哥最近监视的语句事件的当前状态。使用desc performance_schema.events_statements_current查看表结构:

THREAD_ID:与事件关联的线程id,与上边threads的id对应
EVENT_ID:事件启动时的线程当前事件号

THREAD_ID和EVENT_ID一起标志唯一一行,没有两行具有相同的键值对

END_EVENT_ID:在事件开始时设置null,并在事件结束时更新为线程当前事件号
EVENT_NAME:事件的名称
SOURCE:包含生成事件的监测代码的源文件名称和监测发生所在文件的行号
TIMER_START,TIMER_END,TIMER_WaiT:事件的时间信息,开始时间,结束时间,事件的运行时间,单位是皮秒(万分之一秒)。
LOCK_TIME:等待表花费的时间。微妙为单位
SQL_TEXT:SQL语句的文本,对于没有关联SQL语句的命令为null
DIGEST:MD5的32个字符
DIGEST_TEXT:规范化语句摘要文本。
CURRENT_SCHEMA:语句的默认数据库
OBJECT_TYPE,OBJECT_SCHEMA,OBJECT_NAME :对于嵌套语句这些列包含有关父语句的信息
OBJECT_INSTANCE_BEGIN:语句在内存的对象地址
MYSQL_ERRNO:语句错误号
RETURNED_SQLSTATE:sql状态返回
MESSAGE_TEXT:错误信息
ERRORS:该语句是否发生错误。
WARNINGS:警告次数
ROWS_AFFECTED:受语句影响的行数
ROWS_SENT:语句返回的行数
ROWS_EXAMINED:服务器层检查的行数
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

如何查看正在运行的SQL
1、processlist表记录的是MySQL正在运行的线程信息,而每一个线程在threads表中都有用线程的一个唯一id >>> thread_id。events_statements_current表中记录着唯一线程id和该线程对应的SQL语句sql_text.

所以我们可以先在processlist拿到processlist对应的id

通过threads表的字段分析,我们之后一个processlist_id和thread_id一一对应,所以之后在threads表中通过processlist_id拿到thread_id

最后一步就是关键,我们通过thread_id在events_statements_current表中拿到sql_text,也就是我们需要拿到的sql语句。

拿到正在执行的processlist_id
select id from information_schema.processlist

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

拿到正在执行的sql语句
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;

 

来源地址:https://blog.csdn.net/eagle89/article/details/129686151

您可能感兴趣的文档:

--结束END--

本文标题: MySQL查看正在运行的SQL

本文链接: https://www.lsjlt.com/news/407044.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL查看正在运行的SQL
    MySQL查看正在运行的SQL 前言 ​ 在安装MySQL的时候会默认初始化几个MySQL运行所需的数据库:mysql, sys, information_schema, performance_schema.这几个库存储了MySQL在运行...
    99+
    2023-09-14
    mysql sql 数据库
  • MySQL如何查看正在运行的SQL详解
    目录前言processlistthreadsevents_statements_current如何查看正在运行的SQL拿到正在执行的processlist_id拿到与processlist_id对应的thread_id拿...
    99+
    2023-01-12
    mysql查询正在运行的sql mysql执行sql 查看mysql当前正在执行的命令
  • 怎么查看MySQL正在运行的进程
    可以使用以下命令查看MySQL正在运行的进程: 登录MySQL服务器:在终端输入以下命令登录到MySQL服务器: mysql -...
    99+
    2024-04-09
    MySQL
  • DB2中怎么查看正在运行的SQL语句
    在DB2中,可以使用如下命令来查看正在运行的SQL语句: 使用命令行工具连接到DB2数据库实例。 运行以下命令来查看当前正在...
    99+
    2024-03-07
    DB2
  • 怎么查看mysql正在执行的SQL语句
    本篇内容介绍了“怎么查看mysql正在执行的SQL语句”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&nb...
    99+
    2024-04-02
  • oracle如何查看正在运行的job
    在Oracle数据库中,可以通过以下方法来查看正在运行的job: 1、使用DBA_SCHEDULER_RUNNING_JOBS视图:...
    99+
    2024-04-02
  • plsql怎么查看正在执行的SQL
    在PL/SQL中,可以通过使用`DBMS_UTILITY.FORMAT_CALL_STACK`和`DBMS_UTILITY.FORM...
    99+
    2023-10-10
    PLSQL SQL
  • ubuntu18.04如何查看正在运行的程序
    小编给大家分享一下ubuntu18.04如何查看正在运行的程序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法如下首先我们进入ubuntu桌面。点击左下角的应用...
    99+
    2023-06-13
  • centos7如何查看正在运行的服务
    在CentOS 7上,可以使用以下命令来查看正在运行的服务:1. 使用 `systemctl` 命令来列出所有已启动的服务:```s...
    99+
    2023-09-15
    centos7
  • shell如何查看正在运行的进程
    通过使用ps命令可以查看正在运行的进程。下面是一些常用的ps命令选项: ps: 显示当前用户的所有进程。 ps -e: 显示系统中...
    99+
    2024-04-08
    shell
  • ubuntu怎么查看正在运行的程序
    在Ubuntu中,可以使用以下命令来查看正在运行的程序: 使用top命令: 在终端中输入`top`,然后按下回车键,会显示当前正...
    99+
    2023-10-25
    ubuntu
  • centos如何查看正在运行的进程
    要查看正在运行的进程,可以使用以下命令: ps aux 这条命令会列出当前系统上所有正在运行的进程,包括它们的进程ID(PID)、...
    99+
    2024-04-08
    centos
  • 如何查看win7正在运行程序
    这篇文章主要讲解了“如何查看win7正在运行程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何查看win7正在运行程序”吧!查看方法:首先,咱们在键盘上同时按下win+R,然后在弹出来的...
    99+
    2023-06-28
  • Linux怎么查看正在运行进程
    这篇文章主要介绍了Linux怎么查看正在运行进程的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux怎么查看正在运行进程文章都会有所收获,下面我们一起来看看吧。ps命令输入下面的ps命令,显示所有运行中的进...
    99+
    2023-06-28
  • 怎么查看当前正在运行SQL语句的统计信息
    本篇内容介绍了“怎么查看当前正在运行SQL语句的统计信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 如何在 Linux 中查看正在运行的进程
    在 Linux 中,可以使用以下命令来查看正在运行的进程:1. `top` 命令:可以实时地显示系统的整体运行情况,包括 CPU 使...
    99+
    2023-09-21
    linux
  • 如何用shell查看正在运行的进程
    可以使用以下命令来查看正在运行的进程: 使用 ps 命令: ps aux 该命令会列出系统中所有的进程信息,包括进程的 PID...
    99+
    2024-04-08
    shell
  • 查看redis是不是正在运行的方法
    小编给大家分享一下查看redis是不是正在运行的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ps -ef |grep re...
    99+
    2024-04-02
  • 如何停止正在运行的 MySQL 查询?
    为了停止正在运行的 MySQL 查询,我们可以使用带有进程 ID 的 KILL 命令。语法如下 -kill processId;或者您可以借助以下语法停止正在运行的 MySQL 查询 -call mysql.rds_kill(queryId...
    99+
    2023-10-22
  • 如何停止正在运行的 MySQL 查询
    要停止正在运行的 MySQL 查询,可以尝试以下几种方法:1. 使用MySQL命令行工具:在命令行中输入SHOW PROCESSLI...
    99+
    2023-10-20
    MySQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作