• ADADADADAD

    mysql processlist[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 12:11:27

    作者:文/会员上传

    简介:

    今天在写报表时,用Navicat客户端运行一个存储过程,由于语句的原因导致程序一直运行中,整个Navicat客户端都卡住了,无法关闭Navicat客户端。
    于是就想到了kill掉这个线程,登录服务

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    今天在写报表时,用Navicat客户端运行一个存储过程,由于语句的原因导致程序一直运行中,整个Navicat客户端都卡住了,无法关闭Navicat客户端。
    于是就想到了kill掉这个线程,登录服务器mysql,想用showprocesslist方法找出程序ID,结果发现有很多用户在登录并且在执行语句,而且showprocesslist没办法加条件检索
    mysql> show processlist;
    +------+---------+----------------------+---------------------------+---------+-------+--------------+------------------------------------------------------------------------------------------------------+-----------+---------------+
    | Id| User| Host | db| Command | Time | State| Info | Rows_sent | Rows_examined |
    +------+---------+----------------------+---------------------------+---------+-------+--------------+------------------------------------------------------------------------------------------------------+-----------+---------------+
    | 2158 | root| 172.158.8.136:50154 | NULL | Sleep| 20755 | | NULL |219 |219 |
    | 2159 | root| 172.158.8.136:50157 | ADM| Sleep| 4087 | | NULL | 0 | 0 |
    | 2187 | prouser | 172.158.8.226:49647 | NULL | Sleep| 21335 | | NULL |403 |403 |
    | 2189 | admin| 172.158.8.226:49692 | skw_reportdata | Sleep| 4269 | | NULL | 0 | 0 |
    | 2203 | admin| 172.158.8.226:49716 | skw_reportdata | Sleep| 20874 | | NULL | 1000 | 1000 |
    | 2207 | admin| 172.158.8.226:49725 | skw_reportdata | Sleep| 20844 | | NULL | 0 | 0 |
    | 2212 | root| 172.158.8.136:50556 | CDM| Sleep|930 | | NULL | 0 | 1 |
    | 2217 | prouser | 172.30.249.28:47190 |account| Sleep| 11360 | | NULL | 0 | 0 |
    | 2218 | root| 172.158.8.136:50601 | DW| Sleep| 20095 | | NULL | 0 | 0 |
    | 2220 | admin| 172.158.8.61:49553| NULL | Sleep| 20247 | | NULL |19 |19 |
    | 2221 | admin| 172.158.8.61:49554| ADM| Sleep| 20246 | | NULL | 7 | 7 |
    | 2233 | prouser | 172.158.8.125:63769 | account| Sleep| 19659 | | NULL |21 |21 |
    | 2234 | prouser | 172.158.8.125:63771 | account| Sleep| 19512 | | NULL
    .......此处省略大部分结果
    结果很不理想,当然我们可以用其他办法,show processlist的结果是来自information_schema.processlist表中
    mysql> desc information_schema.processlist;
    +---------------+---------------------+------+-----+---------+-------+
    | Field | Type| Null | Key | Default | Extra |
    +---------------+---------------------+------+-----+---------+-------+
    | ID| bigint(21) unsigned | NO| | 0||
    | USER | varchar(16) | NO| | ||
    | HOST | varchar(64) | NO| | ||
    | DB| varchar(64) | YES | | NULL||
    | COMMAND| varchar(16) | NO| | ||
    | TIME | int(7) | NO| | 0||
    | STATE | varchar(64) | YES | | NULL||
    | INFO | longtext| YES | | NULL||
    | TIME_MS| bigint(21) | NO| | 0||
    | ROWS_SENT | bigint(21) unsigned | NO| | 0||
    | ROWS_EXAMINED | bigint(21) unsigned | NO| | 0||
    | TID| bigint(21) unsigned | YES | | NULL||
    +---------------+---------------------+------+-----+---------+-------+
    12 rows in set (0.00 sec)
    我们可以通过这张表进行检索出我们需要的结果
    mysql> SELECT id,user, host, time, command,info from information_schema.processlist where user='root' and info like '%insert into%'\G;
    *************************** 1. row ***************************
    id: 2695
    user: root
    host: localhost
    time: 0
    command: Query
    info: SELECT id,user, host, time, command,info from information_schema.processlist where user='root' and info like '%insert into%'
    *************************** 2. row ***************************
    id: 2645
    user: root
    host: 172.158.8.136:53258
    time: 1522
    command: Query
    info: insert into `CDM`.cdm_product(product_id,product_type,product_name,add_rate,base_rate,year_rate,startdate,enddate,is_current)
    SELECT a.id,CASE
    WHEN IFNULL(i.enlending_type, '9') = '0' THEN '1'
    WHEN IFNULL(i.enlending_type, '9') = '1' THEN '2'
    WHEN IFNULL(i.enlending_type, '9') = '4' THEN '3'
    WHEN IFNULL(i.enlending_type, '9') = '5' THEN '4'
    WHEN IFNULL(i.enlending_type, '9') = '6' THEN'5'
    WHEN IFNULL(i.enlending_type, '9') = '7' THEN '6'
    WHEN IFNULL(i.enlending_type, '9') = '9' THEN '7' ELSE IFNULL(i.enlending_type, '9')END,
    a.loan_info_title,0,a.loan_info_interest,a.loan_info_interest,'20140808','99990101',1
    FROM DW.dw_biz_invest_statements a
    left JOIN DW.dw_biz_loan_info i
    ON a.loan_info_id=i.id
    GROUP BY loan_info_title
    2 rows in set (0.01 sec)
    第二条就是我们要的结果kill掉就OK了
    mysql>kill2645;
    Query OK, 0 rows affected (0.00 sec)
    这个时候Navicat客户端就恢复正常了。!

    mysql processlist.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlprocesslistce