MySQL22 - SQL性能分析

SQL性能分析

  • SQL执行频率

    • 通过 SHOW [SESSION|GLOBAL] STATUS 命令可以提供服务器状态信息,通过以下指令可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次

    • SHOW GLOBAL STATUS LIKE 'Com_______'; //模糊查询七个下划线,涵盖基本语句
      
  • 慢查询日志

    • 用于定位哪些SQL语句执行效率比较低,从而对其进行优化

    • 用于记录所有执行速度超过预设指定时间(默认10秒)的所有SQL语句的日志

    • 慢查询日志默认未开启,需要在MySQL配置文件(/etc/my.cnf)中进行配置

      • 查询是否开启慢查询

      • SHOW VARIABLES LIKE 'slow_query_log';
        
    • /etc/my.cnf文件的配置信息

      • slow_query_log = 1 //开启MySQL慢日志查询开关
      • long_query_time = 2 //设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询记入慢日志
  • profile详情

    • show profile 能够在做SQL优化时帮助我们了解时间都耗费在哪里,通过have_profiling参数,能够看到当前MySQL是否支持profile操作:

      • SELECT @@have_profiling;
        
    • 查看profile是否开启

      • SELECT @@profiling;
        
    • 开启profile

      • SET profiling = 1;
        
    • 查看之前执行的SQL语句耗时情况

      • SHOW PROFILES;
        
    • 查看指定query_id的SQL语句的耗时情况

      • SHOW PROFILE FOR QUERY 140;
        
  • explain 执行计划

    • 在 SELECT 语句前加 EXPLAIN 关键字,获取MySQL如何执行SELECT语句的信息,包括SELECT执行中表的连接和执行顺序

    • EXPLAIN SELECT * FROM tb_user;
      
posted @ 2023-01-09 15:29  LaViez  阅读(58)  评论(0)    收藏  举报