how to customize `show processlist` in mysql?

前端 未结 6 969
孤城傲影
孤城傲影 2021-01-29 18:11

I want to order by Time,but seems no way to do that ?

mysql> show processlist;
+--------+-------------+--------------------+------+---------+--------+--------         


        
相关标签:
6条回答
  • 2021-01-29 18:27

    If you use old version of MySQL you can always use \P combined with some nice piece of awk code. Interesting example here

    http://www.dbasquare.com/2012/03/28/how-to-work-with-a-long-process-list-in-mysql/

    Isn't it exactly what you need?

    0 讨论(0)
  • 2021-01-29 18:30

    You can just capture the output and pass it through a filter, something like:

    mysql show processlist
        | grep -v '^\+\-\-'
        | grep -v '^| Id'
        | sort -n -k12
    

    The two greps strip out the header and trailer lines (others may be needed if there are other lines not containing useful information) and the sort is done based on the numeric field number 12 (I think that's right).

    This one works for your immediate output:

    mysql show processlist
        | grep -v '^\+\-\-'
        | grep -v '^| Id'
        | grep -v  '^[0-9][0-9]* rows in set '
        | grep -v '^ '
        | sort -n -k12
    
    0 讨论(0)
  • 2021-01-29 18:38

    ...We don't have a newer version of MySQL yet, so I was able to do this (works only on UNIX):

     host=maindb
    
     echo "show full processlist\G" | mysql -h$host | grep -B 6 -A 1 Locked
    

    The above will query for all locked sessions, and return the information and SQL that is involved.

    ...So- assuming you wanted to query for sessions that were sleeping:

      host=maindb
    
      echo "show full processlist\G" | mysql -h$host | grep -B 6 -A 1 Sleep
    

    Or, assuming you needed to provide additional connection parameters for MySQL:

      host=maindb
    
      user=me
    
      password=mycoolpassword 
    
      echo "show full processlist\G" | mysql -h$host -u$user -p$password | grep -B 6 -A 1 Locked
    

    With a couple of tweaks, I'm sure a shell script could be easily created to query the processlist the way you want it.

    0 讨论(0)
  • 2021-01-29 18:40

    The command

    show full processlist
    

    can be replaced by:

    SELECT * FROM information_schema.processlist
    

    but if you go with the latter version you can add WHERE clause to it:

    SELECT * FROM information_schema.processlist WHERE `INFO` LIKE 'SELECT %';
    

    For more information visit this

    0 讨论(0)
  • 2021-01-29 18:43

    Another useful tool for this from the command line interface, is the pager command.

    eg

    pager grep -v Sleep | more; show full processlist;
    

    Then you can page through the results.

    You can also look for certain users, IPs or queries with grep or sed in this way.

    The pager command is persistent per session.

    0 讨论(0)
  • 2021-01-29 18:45

    Newer versions of SQL support the process list in information_schema:

    SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
    

    You can ORDER BY in any way you like.

    The INFORMATION_SCHEMA.PROCESSLIST table was added in MySQL 5.1.7. You can find out which version you're using with:

    SELECT VERSION()
    
    0 讨论(0)
提交回复
热议问题