前言
在安装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.
2、所以我们可以先在processlist拿到processlist对应的id
3、通过threads表的字段分析,我们之后一个processlist_id和thread_id一一对应,所以之后在threads表中通过processlist_id拿到thread_id
4、最后一步就是关键,我们通过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
总结
转载请注明:IT运维空间 » Java » MySQL如何查看正在运行的SQL详解
36136条评论
楼主发几张靓照啊!http://2s7tg.xmona.com.cn
楼主该去看心理医生了!http://www.qkl183.com
在这个版块混了这么久了,第一次看见这么给你的帖子!http://nx1w.yunzongcn.com
楼主是我最崇拜的人!https://wqtz.gzexgrp.com
哥回复的不是帖子,是寂寞!http://ki1.haosina.com
东方不败还是灭绝师太啊?http://py9.winsuncity.com
白富美?高富帅?http://uga9.winsuncity.com
看了这么多帖子,第一次看到这么有深度了!http://www.ddman.net
关注一下!https://wqtz.gzexgrp.com
看帖不回帖的人就是耍流氓,我回复了!http://2thy.toilet-trainers.com
不灌水就活不下去了啊!http://259w.toilet-trainers.com
宇宙第一贴诞生了!http://www.gxmlm.com
太邪乎了吧?http://www.qkl183.com
论坛的帖子越来越有深度了!http://91lq4.chygjs.com
支持楼上的!http://039.chygjs.com
顶!顶!顶!http://66z9f.sd-xny.com/13/4.html
楼主发几张靓照啊!http://a7sjyu.qhs61yey.com
怎么我回帖都没人理我呢?http://dponjl.qhs61yey.com
论坛的人气越来越旺了!http://lp17i.qhs61yey.com
我裤子脱了,纸都准备好了,你就给我看这个?http://0pzim.aijiankang99.com
今天怎么了,什么人都出来了!http://2lpv7.dolopogrosir.com/20240711/4.html
大神好强大!http://jc1ntb.mojushijie.com
今天怎么了,什么人都出来了!http://xc7avc.mojushijie.com
内容很有深度!http://8hub.1360371.com
这么版块的帖子越来越有深度了!http://cvroo.300000km.com
观点鲜明,立场坚定,作者态度明确。http://8jhvp.chenxingruyu.com/q/4.html
灌水不是我的目的!http://lk194.aijiankang99.com
看了这么多帖子,第一次看到这么有深度了!http://www.2qukuai.com
好无聊啊!http://pt3mx.thewinemall.cn
楼主发几张靓照啊!http://730l6d.xinhe-iso.com
楼主是在找骂么?http://z0u.xinhe-iso.com
写得实在太好了,我唯一能做的就是默默顶贴!http://jmd.chygjs.com
看帖不回帖都是耍流氓!http://pt58ou.dvxatope.com
哥回复的不是帖子,是寂寞!http://7wf1.pushyads.com
这么版块的帖子越来越有深度了!http://oh2k.pushyads.com
楼主是在找骂么?http://jm8.nanbeichun.com
以后要跟楼主好好学习学习!http://lk55z.nanbeichun.com
不错的帖子,值得收藏!http://f2kcn.czhuadong.com
听楼主一席话,省我十本书!http://89tts.yunzongcn.com
对牛弹琴的人越来越多了!http://l9jh8.czhuadong.com
不灌水就活不下去了啊!http://www.2qukuai.com
鉴定完毕!http://v3dy.w2artstudio.com
论坛的人气不行了!http://ciitn.sh-cuizhu.com
以后要跟楼主好好学习学习!http://lyfwi.bmx99.com/f/4.html
看在楼主的面子上,认真回帖!http://f5e6j.3xyq.com
灌水不是我的目的!http://o5g0np.longzhiyintea.com
看了这么多帖子,第一次看看到这么有内涵的!http://qorhz.longzhiyintea.com
楼主的帖子提神醒脑啊!http://9s4g.zgscjj.org
网页的加载速度非常快,不会影响用户体验。http://21ap.dtzxyry.com
楼主的等级很高啊!http://igvba.dtzxyry.com
投楼主一票,不用谢哦!http://1697f.tcjj666.com
有品位!http://thdg1y.yunzongcn.com
好帖子!http://umyzf.zjseeds.com
对牛弹琴的人越来越多了!http://rguri.522128.com/29/5.html
有内涵!http://2e2ak.ekor-metal.com/13/5.html
我和我的小伙伴都惊呆了!http://end6b.wntqzwfwzx.com/4/5.html
内容很有深度!http://2tnvvw.tjjyfs.com
十分赞同楼主!http://1hw.jx-hq.com
终于看完了,很不错!http://k96jn.xinhe-iso.com
看了这么多帖子,第一次看到这么经典的!http://www.gxmlm.com
强,我和我的小伙伴们都惊呆了!http://g2j2.gzjinteng.com
吹牛的人越来越多了!http://ndj.gzjinteng.com
今天是个特别的日子,值得纪念!http://zq9sb.jx-hq.com
林子大了,什么鸟都有了啊!http://pd4nc.catme.com.cn
楼主最近很消极啊!http://www.qkl183.com
楼主主机很热情啊!http://xob0o.thewinemall.cn
楼主说的我也略懂!http://p4n.catme.com.cn
网站做得不错https://wqtz.gzexgrp.com
支持一个http://q7w9i.zbqinjiang.com
楼上的真不讲道理!http://a75.zjy2.com
我对楼主的敬仰犹如滔滔江水绵延不绝!http://tcqgy.3d5q.com/30/3.html
楼上的说的很多!http://dt3h.obo-fa.com
楼主是一个神奇的青年!http://842r.pushyads.com
视死如归的架势啊!http://k196r.tianwangbiao.net
经典,收藏了!http://tymv.ckppe.cn
我回帖楼主给加积分吗?http://25e.stevemulry.com
以后要跟楼主好好学习学习!http://deih2t.obo-fa.com
很有看点!http://k02.ckppe.cn
收藏了,楼主加油!http://932j.haosina.com
我只看看不说话。。。http://t0ns.sh-cuizhu.com
刚看见一个妹子,很漂亮!http://w2onb.winsuncity.com
顶顶更健康!http://kqbt40.yunzongcn.com
以后要跟楼主好好学习学习!http://865g.zgscjj.org
我裤子脱了,纸都准备好了,你就给我看这个?http://tz312.changjiaguo.com
我默默的回帖,从不声张!http://l64rzp.sh-cuizhu.com
楼主加油,看好你哦!http://q3ss.bjhszm.cn
这么版块的帖子越来越有深度了!http://x08ee.0752sf.com
今天上网不回帖,回帖就回精华帖!http://7zzc.dtzxyry.com
没人理我,好伤心啊!http://b63.zgscjj.org
楼主发几张靓照啊!http://647spz.balagen.com
这一年啥事没干,光研究楼主的帖子了!http://4huxm.12123123.com/w/4.html
对牛弹琴的人越来越多了!http://4cfk.longzhiyintea.com
赞一个!http://zur6k9.zgscjj.org
支持一下,下面的保持队形!http://jo1o.zgscjj.org
安福相册精准查找https://ccc444.com
听楼主一席话,省我十本书!http://dezco.qiudashen.com/20240711/5.html
今天怎么了,什么人都出来了!http://nhv0v.zjseeds.com
信楼主,考试不挂科!http://4nzgv.gz-baiyu.com
看帖、回帖、拿分、走人http://fs4km.agriculture4.com
投楼主一票,不用谢哦!http://48gac.aijiankang99.com