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 @   LaViez  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示