对于MySQL 5.7版本,可以使用sys.session视图来查看会话最后一次执行的SQL:
SELECT *FROM sys.session
WHERE CONN_ID= 20036 \G
其中sys.session视图关联到sys.processlist,而sys.processlist又使用到`performance_schema`.`events_statements_current`。
如果想查询某个会话从开启到现在的执行过的SQL情况,就需要使用到下列表:
performance_schema.events_statements_current
performance_schema.events_statements_history
performance_schema.events_transactions_history_long
上面三张表中记录MySQL服务器最近执行过的SQL情况,但上面三张表中的表示时间的字段使用皮秒来表示,且不能直接使用FROM_UNIXTIME来转换(不是以1970-01-01 00:00 或 0000-01-01 00:00为起点, 每个MySQL实例的起始基线不同)。
使用下面脚本可以查看到特定会话上的SQL执行情况:
SELECT @dt_ts:=UNIX_TIMESTAMP(NOW());SELECT
@dt_timer:=MAX(SH.TIMER_START)FROM performance_schema.threads AST1INNER JOIN performance_schema.events_statements_history ASSHON T1.`THREAD_ID`=SH.`THREAD_ID`WH