• mysql查询相关


    查询事务

    SELECT * FROM information_schema.INNODB_TRXG;

    查询正在锁的事务

    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观察这个进程了。

  • 相关阅读:
    Linux 系统挂载数据盘
    Apache Rewrite规则笔记
    linux fdisk分区笔记
    阿里云linux配置
    linux 下安装mysql相关笔记
    ShopNC目录结构分析
    今天开始出发做ShopNC
    svn相关笔记
    linux学习笔记-不定时更新
    Oracle EBS Java Applet报错:找不到类
  • 原文地址:https://www.cnblogs.com/52py/p/11269611.html
Copyright © 2020-2023  润新知