• MySQL--SHOW PROCESSLIST


    在MySQL中,可以通过SHOW PROCESSLIST命令来查看当前线程:

    show processlist;
    +----+------+-----------+------+---------+------+-------+------------------+
    | Id | User | Host      | db   | Command | Time | State | Info             |
    +----+------+-----------+------+---------+------+-------+------------------+
    |  8 | root | localhost | NULL | Sleep   |   20 |       | NULL             |
    |  9 | root | localhost | NULL | Query   |    0 | init  | show processlist |
    +----+------+-----------+------+---------+------+-------+------------------+

    SHOW PROCESSLIST命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态。

    输出结果列信息为:

    (1)id列,用户登录mysql时,系统分配的“connection_id”
    (2)user列,显示当前用户。如果不是root,这个命令就只显示用户权限范围的sql语句
    (3)host列,显示这个语句是从哪个ip的哪个端口上发的,可以用来跟踪出现问题语句的用户
    (4)db列,显示这个进程目前连接的是哪个数据库
    (5)command列,显示当前连接的执行的命令,一般取值为休眠(sleep),查询(query),连接(connect)
    (6)time列,显示这个状态持续的时间,单位是秒
    (7)state列,显示使用当前连接的sql语句的状态
    (8)info列,显示这个sql语句,是判断问题语句的一个重要依据。

    SHOW FULL PROCESSLIST用来显示完整的Info列信息,等价于:

    select * from information_schema.processlist;

    循环输入日志

    输出执行时间超过1秒的进程

    #=============================================##
    ## mysql config ##
    mysql_host="127.0.0.1"
    mysql_port=3306
    mysql_user="root"
    mysql_password="root"
    process_log="/export/mysql_tools/show_mysql_process/${mysql_host}-$(date "+%Y%m%d").log"
    tmp_process_log="/export/mysql_tools/show_mysql_process/${mysql_host}-$(date "+%Y%m%d").tmp"
    show_process_script="
    SELECT *
    FROM information_schema.processlist 
    WHERE COMMAND NOT IN('Sleep','Binlog Dump') 
    AND ID<>CONNECTION_ID() 
    AND TIME>0 G
    "
    
    ##=============================================##
    ## loop running
    for i in `seq 1000`;
    do
    
    echo "============$(date "+%Y-%m-%d %H:%M:%S")=============">>"${process_log}"
    
    /usr/bin/mysql 
    --host="${mysql_host}" 
    --port=${mysql_port} 
    --user="${mysql_user}" 
    --password="${mysql_password}" 
    --database="mysql" 
    --batch 
    --execute="${show_process_script}"  
    1>"${tmp_process_log}" 
    2>/dev/null
    
    cat "${tmp_process_log}" |sed 's/[ ][ ]*/ /g'|sed 's/^[ 	]*//g'|grep -v "^$">>"${process_log}"
    
    sleep 1
    
    done
    ##=============================================##
  • 相关阅读:
    软工作业01 P18 第四题
    自我介绍
    进行代码复审训练
    源代码管理工具调查
    软工作业PSP与单元测试训练
    进行代码复审训练
    源代码管理工具
    软工作业PSP与单元测试训练
    作业
    第一堂课
  • 原文地址:https://www.cnblogs.com/gaogao67/p/10493160.html
Copyright © 2020-2023  润新知