MySQL - 慢查询日志 & SHOW PROFILES

    技术2022-07-14  71

    慢查询日志

    记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询

    可以在mysql控制台直接输命令,但是只针对当前数据库,且重启后失效。 还可以在my.cnf里面直接配置。 my.ini是MySQL数据库中使用的配置文件,修改这个文件可以达到更新配置的目的。

     

    show variables like '%slow_query_log%'; //查看慢日志文件功能是否开启及日志文件的位置(windows默认在C:\ProgramData\MySQL\MySQL Server 5.7\Data) set global slow_query_log=1; //开启慢日志文件功能(仅针对当前数据库,重启MySQL会失效,一劳永逸则在my.cnf中配置) show variables like 'long_query_time%'; //查询超过几秒算慢sql select sleep(10); //模仿运行超过10秒的sql命令 show global status like '%slow_queries%'; //查看当前系统有多少慢sql

    当然,不可能一条一条去慢日志文件中查看,MySQL提供了日志分析工具:mysqldumpslow mysqldumpslow --help;

    下面是mysqldumpslow命令后面常接的东西,具体解释见MySQL技术内幕p69。

    后面接的是自己要分析的慢日志文件。

     


    Show Profiles (查看   sql语句(经过试验证明,不光只有查询语句,插入语句等也会显示)    在MySQL服务器里面的执行情况等)

    先打开: show variables like 'profiling'; //查看当前MySQL服务器是否支持该功能 set profiling=on; //打开(默认关闭)

    下面可以正式使用: show profiles; //查看结果(包含Query_ID)

    show profile cpu,block io for query ${Query_ID}; //查看具体的某个Query (可以看到每一步)

    Status中出现的比较致命的东西:

    Processed: 0.011, SQL: 9