查询事务

SELECT * FROM information_schema.INNODB_TRX\G;

查询正在锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

查询等待锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

查询进程

show full PROCESSLIST;

查询是否锁表

show OPEN TABLES where In_use > 0;

查看执行慢于多少秒的SQL会记录到日志文件中

mysql> show variables like 'long_query_time';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| long_query_time | 1     |   
+-----------------+-------+
1 row in set (0.00 sec)

这里value=1, 表示1秒

查看mysql正在执行的SQL语句

 1)我们先通过status命令查看Mysql运行状态

mysql> status;
--------------
mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

Connection id: 5253971
Current database:
Current user: root@10.100.2.44
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.28-cdb2016-log 20180130
Protocol version: 10
Connection: 10.100.2.12 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
TCP port: 3306
Uptime: 324 days 21 hours 40 min 2 sec

Threads: 794 Questions: 9943084367 Slow queries: 86565 Opens: 374570 Flush tables: 1 Open tables: 512 Queries per second avg: 354.204
--------------

在上面显示列表的最后一条,我们来查看Slow queries这一项的值,如果多次查看的值大于0的话,说明有些查询sql命令执行时间过长。

2)这时再通过show processlist命令来查看当前正在运行的SQL,从中找出运行慢的SQL语句,找到执行慢的语句后,再用explain命令查看这些语句的执行计划。

mysql> show processlist;
+---------+-------------+-------------------+-------+------------------+----------+-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+---------+-------------+-------------------+-------+------------------+----------+-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
| 38 | tencentroot | :55883 | NULL | Binlog Dump GTID | 28070125 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL |
| 60039 | tencentroot | :60501 | NULL | Sleep | 16 | | NULL |
| 4693581 | tencentroot | :42223 | NULL | Sleep | 0 | | NULL |
| 4825829 | root | 10.100.2.44:58140 | wxqyh | Sleep | 43 | | NULL |
| 4825831 | root | 10.100.2.44:58144 | wxqyh | Sleep | 43 | | NULL |
| 4825833 | root | 10.100.2.44:58148 | wxqyh | Sleep | 43 | | NULL |
| 4825835 | root | 10.100.2.44:58152 | wxqyh | Sleep | 43 | | NULL |

| 5253325 | root | 10.100.2.4:54602 | wxqyh | Query | 1 | Sending data | SELECT p.id,p.org_id,p.person_id,p.ranges,p.children_count,p.parent_id, u.user_name FROM tb_qy_mana |

.......

+---------+-------------+-------------------+-------+------------------+----------+-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
796 rows in set (0.00 sec)
或者

mysql> select * from information_schema.`PROCESSLIST` where info is not null;
+---------+------+-------------------+--------------------+---------+------+--------------+----------------------------------------------------------------------------------------------------------------------------+
| ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO |
+---------+------+-------------------+--------------------+---------+------+--------------+----------------------------------------------------------------------------------------------------------------------------+
| 5253186 | root | 10.100.2.23:45704 | wxqyh | Query | 0 | Sending data | select count(id) as all_user from tb_qy_user_info where ORG_ID= '4fe5564c-92df-4016-914e-ac439133e672' and USER_STATUS='2' |
| 5253971 | root | 10.100.2.44:58820 | information_schema | Query | 0 | executing | select * from information_schema.`PROCESSLIST` where info is not null |
+---------+------+-------------------+--------------------+---------+------+--------------+----------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

简单说一下各列的含义和用途,
id列 , 不用说了吧,一个标识,你要 kill 一个语句的时候很有用。 
user列, 显示单前用户,如果不是 root ,这个命令就只显示你权限范围内的 sql 语 句。

host 列,显示这个语句是从哪个 ip 的哪 个端口上发出的。呵呵,可以用来追踪出问题语句的用户。

db 列,显示这个进程目前连接的是 哪个数据库 。

command 列,显示当前连接的执行的命令,一般就是休眠( sleep ),查询( query ),连接( connect )。

time 列,此这个状态持续的时间,单位是秒。

state 列,显示使用当前连接的 sql 语句的状态,很重要的列,后续会有所有的状态的描述,请注意, state 只是语句执行中的某一个状态,一个 sql 语 句,已查询为例,可能需要经过 copying to tmp table ,Sorting result , Sending data 等状态才 可以完成,

info 列,显示这个 sql 语 句,因为长度有限,所以长的 sql 语句就显示不全,但是一个判断问题语句的重要依据。

中止掉上面查到的某个线程

kill id;
- 示例:
mysql>kill 277801;

当MySQL繁忙的时候运行show processlist,会发现有很多行输出,每行输出对应一个MySQL连接。怎么诊断发起连接的进程是哪个?它当前正在干嘛呢?

首先,需要通过TCP Socket而不是Unix Socket连接MySQL,这样在show processlist的输出中就会有来源端口号。如下,

mysql> show processlist;
+——–+——–+—————–+——+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+——–+——–+—————–+——+———+——+——-+——————+
| 277801 | mydbuser | localhost:35558 | mydb | Sleep | 1 | | NULL |
| 277804 | mydbuser | localhost:35561 | mydb | Sleep | 1 | | NULL |
| 277805 | mydbuser | localhost:35562 | mydb | Sleep | 0 | | NULL |
+——–+——–+—————–+——+———+——+——-+——————+

在Host列有来源IP和端口号,然后我们从连接机器查看端口号是谁打开的,

[root@localhost ~]# netstat -ntp | grep 35558
… 124.115.0.68:35558 ESTABLISHED 18783/httpd

可知进程18783发起的MySQL连接来源端口是35558,然后就可以用strace观察这个进程了。

mysql查询相关的更多相关文章

  1. mysql查询相关的命令解析

    特:不重启mysql 更新配置文件方法(不允许重启mysql实例或连接不上msyql服务器): gdb -p $(pidof mysqld) -ex "set max_connections ...

  2. mysql查询相关问题

    前言 本文实现的这个需求其实十分普遍,举例来说,我们存在一个用户来源表,用来标记用户从哪个渠道注册进来.表结构如下所示… 其中 origin 是用户来源,其中的值有 iPhone .Android . ...

  3. mysql 查询相关命令

    1. 结果集按列展示 mysql  -u用户名  -p密码  -D 数据库名 -e  sql语句 示例:mysql   -uroot  -p123456  -D mysql -e select * f ...

  4. MySQL查询相关(初级)(全文重点)

    where 是约束条件 先找到表 from t1 where 条件 : 指的是把表里的数据,一条一条的记录取出来 然后 group by 分组, having 是过滤条件 指记录已经出来 聚合 cou ...

  5. 关于mysql,需要掌握的基础(一):CRUD、存储引擎、单表查询相关、多表查询join、事务并发、权限管理等等

    目录 关于mysql,需要掌握的基础(一): 1.了解数据库sql.数据库系统.数据库管理系统的概念. 2.了解DDL.DML.DQL语句是什么? 3.了解存储引擎.存储引擎[InnoDB 和 MyI ...

  6. MySQl 查询性能优化相关

    0. 1.参考 提升网站访问速度的 SQL 查询优化技巧 缓存一切数据,读取内存而不是硬盘IO 如果你的服务器默认情况下没有使用MySQL查询缓存,那么你应该开启缓存.开启缓存意味着MySQL 会把所 ...

  7. 使用MySQL客户端登录Ensemble数据库查询相关信息

    Ensemble公共MySQL数据库 对于大量数据和更详细的分析,Ensemble的MySQL服务器ensembldb.ensembl.org,useastdb.ensembl.org或asiadb. ...

  8. Mysql查询——学习阶段

    1.开篇 搞开发的都知道,当数据量很大的时候,我们的代码逻辑的简单性就显得十分重要,否则处理起来就需要花费相当多的时间.另外还有一个地方需要注意的是我们写的sql语句. 一个拥有多年开发的资深开发者可 ...

  9. Mysql 查询练习

    Mysql 查询练习 ---创建班级表 create table class( cid int auto_increment primary key, caption ) )engine=innodb ...

随机推荐

  1. Pxe自动化安装

    Centos7环境 Systemctl stop firewalld Setenforce Yum本地源 cd /etc/yum.repos.d/ 进入/etc/yum.repos.d/ Ls 查看 ...

  2. Linux里lftp总结

    lftp的功能比较强大,相比原来用ftp,方便了很多. 1.登陆: lftp ftp://yourname@site pwd:***** 或 open ftp://yourname@site 基本操作 ...

  3. js判断元素是否可见

    dom元素是否可见可使用jq的is方法和dom的offsetParent === null方法 jq中 $(element).is(":visible") === true !!( ...

  4. atomic 原子操作的类

    import java.util.concurrent.atomic.AtomicInteger; /** * 原子操作的类 atomic */ public class VolatileDemo { ...

  5. Vue学习笔记【28】——Vue路由(使用 children 属性实现路由嵌套)

    使用 children 属性实现路由嵌套   <div id="app">    <router-link to="/account"> ...

  6. windows 下安装python 的requests模块

    下载地址:https://codeload.github.com/requests/requests/legacy.zip/master 下载好后解压,进入目录执行下面命令 在cmd下:python ...

  7. 使用Canvas操作像素

    现代浏览器支持通过<video>元素播放视频.大多数浏览器也可以通过MediaDevices.getUserMedia() API访问摄像头.但即使这两件事结合起来,我们也无法直接访问和操 ...

  8. python 使用yaml模块

    python:yaml模块一.yaml文件介绍YAML是一种简洁的非标记语言.其以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁.1. yaml文件规则基本规则:    大小写敏感   ...

  9. 重写__eq__函数——对象list中使用in index()——获得list中不同属性对象个数

    https://blog.csdn.net/anlian523/article/details/80868961

  10. HBase 入门之数据刷写(Memstore Flush)详细说明

    接触过 HBase 的同学应该对 HBase 写数据的过程比较熟悉(不熟悉也没关系).HBase 写数据(比如 put.delete)的时候,都是写 WAL(假设 WAL 没有被关闭) ,然后将数据写 ...