如何在MySQL中跟踪存储过程的执行情况

一些OLAP的MySQL数据库中往往有很多复杂的存储过程,并存在相互调用的情况,在调试过程中需要知道过程中执行的sql和sql执行状态信息以便更好的了解执行情况。

MySQL版本:5.7.31

方案:

通过performance_schema中的events_statements_current和events_statements_history表信息跟踪存MySQL储过程执行情况

创建了存储过程test1和test2,test1会调用test2

当执行test1以后 # CALL test1();

events_statements_current中记录这最近一次存储过程执行的记录

SELECT
    THREAD_ID,
    EVENT_ID,
    END_EVENT_ID,
    EVENT_NAME,
    DATE_SUB(
        NOW(),
        INTERVAL (
            SELECT
                VARIABLE_VALUE
            FROM
                performance_schema.global_status
            WHERE
                VARIABLE_NAME = 'UPTIME'
        ) - TIMER_START * 10e -13 second
    ) AS 'start_time', --转换时间
    ROUND(timer_wait * 10E -10, 3) AS 'wait in (ms)',
    LOCK_TIME,
    SQL_TEXT
FROM
    performance_schema.events_statements_current
WHERE
    EVENT_NAME LIKE '%call_procedure';
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值