mysql查询相关
查询事务
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查询相关的更多相关文章
- mysql查询相关的命令解析
特:不重启mysql 更新配置文件方法(不允许重启mysql实例或连接不上msyql服务器): gdb -p $(pidof mysqld) -ex "set max_connections ...
- mysql查询相关问题
前言 本文实现的这个需求其实十分普遍,举例来说,我们存在一个用户来源表,用来标记用户从哪个渠道注册进来.表结构如下所示… 其中 origin 是用户来源,其中的值有 iPhone .Android . ...
- mysql 查询相关命令
1. 结果集按列展示 mysql -u用户名 -p密码 -D 数据库名 -e sql语句 示例:mysql -uroot -p123456 -D mysql -e select * f ...
- MySQL查询相关(初级)(全文重点)
where 是约束条件 先找到表 from t1 where 条件 : 指的是把表里的数据,一条一条的记录取出来 然后 group by 分组, having 是过滤条件 指记录已经出来 聚合 cou ...
- 关于mysql,需要掌握的基础(一):CRUD、存储引擎、单表查询相关、多表查询join、事务并发、权限管理等等
目录 关于mysql,需要掌握的基础(一): 1.了解数据库sql.数据库系统.数据库管理系统的概念. 2.了解DDL.DML.DQL语句是什么? 3.了解存储引擎.存储引擎[InnoDB 和 MyI ...
- MySQl 查询性能优化相关
0. 1.参考 提升网站访问速度的 SQL 查询优化技巧 缓存一切数据,读取内存而不是硬盘IO 如果你的服务器默认情况下没有使用MySQL查询缓存,那么你应该开启缓存.开启缓存意味着MySQL 会把所 ...
- 使用MySQL客户端登录Ensemble数据库查询相关信息
Ensemble公共MySQL数据库 对于大量数据和更详细的分析,Ensemble的MySQL服务器ensembldb.ensembl.org,useastdb.ensembl.org或asiadb. ...
- Mysql查询——学习阶段
1.开篇 搞开发的都知道,当数据量很大的时候,我们的代码逻辑的简单性就显得十分重要,否则处理起来就需要花费相当多的时间.另外还有一个地方需要注意的是我们写的sql语句. 一个拥有多年开发的资深开发者可 ...
- Mysql 查询练习
Mysql 查询练习 ---创建班级表 create table class( cid int auto_increment primary key, caption ) )engine=innodb ...
随机推荐
- Pxe自动化安装
Centos7环境 Systemctl stop firewalld Setenforce Yum本地源 cd /etc/yum.repos.d/ 进入/etc/yum.repos.d/ Ls 查看 ...
- Linux里lftp总结
lftp的功能比较强大,相比原来用ftp,方便了很多. 1.登陆: lftp ftp://yourname@site pwd:***** 或 open ftp://yourname@site 基本操作 ...
- js判断元素是否可见
dom元素是否可见可使用jq的is方法和dom的offsetParent === null方法 jq中 $(element).is(":visible") === true !!( ...
- atomic 原子操作的类
import java.util.concurrent.atomic.AtomicInteger; /** * 原子操作的类 atomic */ public class VolatileDemo { ...
- Vue学习笔记【28】——Vue路由(使用 children 属性实现路由嵌套)
使用 children 属性实现路由嵌套 <div id="app"> <router-link to="/account"> ...
- windows 下安装python 的requests模块
下载地址:https://codeload.github.com/requests/requests/legacy.zip/master 下载好后解压,进入目录执行下面命令 在cmd下:python ...
- 使用Canvas操作像素
现代浏览器支持通过<video>元素播放视频.大多数浏览器也可以通过MediaDevices.getUserMedia() API访问摄像头.但即使这两件事结合起来,我们也无法直接访问和操 ...
- python 使用yaml模块
python:yaml模块一.yaml文件介绍YAML是一种简洁的非标记语言.其以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁.1. yaml文件规则基本规则: 大小写敏感 ...
- 重写__eq__函数——对象list中使用in index()——获得list中不同属性对象个数
https://blog.csdn.net/anlian523/article/details/80868961
- HBase 入门之数据刷写(Memstore Flush)详细说明
接触过 HBase 的同学应该对 HBase 写数据的过程比较熟悉(不熟悉也没关系).HBase 写数据(比如 put.delete)的时候,都是写 WAL(假设 WAL 没有被关闭) ,然后将数据写 ...