«

PHP查询消耗资源最高的SQL语句

刚子 发布于 阅读:13


慢日志可以记录执行时间大于指定数值的SQL,但是有些时候并非单条SQL长时间执行造成的,也有可能是一条执行速度比较快,但是执行及其频繁造成的,这种情况下慢日志完全失效。可以使用Performance Schema来查看。
语句如下:

    -- 查看最近执行时间最长、或等待事件最多的语句
    SELECT 
        DIGEST_TEXT AS query_template, -- 参数化后的SQL模板
        COUNT_STAR AS exec_count,      -- 执行次数
        SUM_TIMER_WAIT / 1000000000000 AS total_latency_sec, -- 总耗时(秒)
        AVG_TIMER_WAIT / 1000000000000 AS avg_latency_sec,   -- 平均耗时
        SCHEMA_NAME,
        LAST_SEEN -- 最后一次执行时间
    FROM performance_schema.events_statements_summary_by_digest
    ORDER BY SUM_TIMER_WAIT DESC
    LIMIT 10;

Performance Schema是记录在内存中的,清空Performance Schema数据重新开始统计的命令如下:

-- 清空所有 SQL 语句性能统计(CPU、耗时、次数全部清零)
TRUNCATE TABLE performance_schema.events_statements_summary_by_digest;