-- Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; version 2 of the License. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -- -- View: x$processlist -- -- A detailed non-blocking processlist view to replace -- [INFORMATION_SCHEMA. | SHOW FULL] PROCESSLIST -- -- Performs less locking than the legacy sources, whilst giving extra information. -- -- mysql> select * from x$processlist where conn_id is not null\G -- *************************** 1. row *************************** -- thd_id: 31 -- conn_id: 12 -- user: root@localhost -- db: information_schema -- command: Query -- state: Sending data -- time: 0 -- current_statement: select * from processlist limit 5 -- lock_latency: 1066000000 -- rows_examined: 0 -- rows_sent: 0 -- rows_affected: 0 -- tmp_tables: 2 -- tmp_disk_tables: 1 -- full_scan: YES -- current_memory: 1464694 -- last_statement: NULL -- last_statement_latency: NULL -- last_wait: wait/io/file/myisam/dfile -- last_wait_latency: 1602250 -- source: mf_iocache.c:163 -- CREATE OR REPLACE ALGORITHM = TEMPTABLE DEFINER = 'root'@'localhost' SQL SECURITY INVOKER VIEW x$processlist ( thd_id, conn_id, user, db, command, state, time, current_statement, lock_latency, rows_examined, rows_sent, rows_affected, tmp_tables, tmp_disk_tables, full_scan, current_memory, last_statement, last_statement_latency, last_wait, last_wait_latency, source ) AS SELECT pps.thread_id AS thd_id, pps.processlist_id AS conn_id, IF(pps.name = 'thread/sql/one_connection', CONCAT(pps.processlist_user, '@', pps.processlist_host), REPLACE(pps.name, 'thread/', '')) user, pps.processlist_db AS db, pps.processlist_command AS command, pps.processlist_state AS state, pps.processlist_time AS time, pps.processlist_info AS current_statement, esc.lock_time AS lock_latency, esc.rows_examined, esc.rows_sent, esc.rows_affected, esc.created_tmp_tables AS tmp_tables, esc.created_tmp_disk_tables AS tmp_disk_tables, IF(esc.no_good_index_used > 0 OR esc.no_index_used > 0, 'YES', 'NO') AS full_scan, mem.current_allocated AS current_memory, IF(esc.timer_wait IS NOT NULL, esc.sql_text, NULL) AS last_statement, IF(esc.timer_wait IS NOT NULL, esc.timer_wait, NULL) AS last_statement_latency, ewc.event_name AS last_wait, IF(ewc.timer_wait IS NULL AND ewc.event_name IS NOT NULL, 'Still Waiting', ewc.timer_wait) last_wait_latency, ewc.source FROM performance_schema.threads AS pps LEFT JOIN performance_schema.events_waits_current AS ewc USING (thread_id) LEFT JOIN performance_schema.events_statements_current AS esc USING (thread_id) LEFT JOIN sys.x$memory_by_thread_by_current_bytes AS mem USING (thread_id) ORDER BY pps.processlist_time DESC, last_wait_latency DESC;