MySQL 性能分析

MySQL 性能分析

对 mysql 进行性能分析,主要就是提升查询的效率,其中索引占主导地位。对 mysql 进行性能分析主要有如下几种方式:

方式一:查看 sql 执行频次

show global status like 'Com_______'; // global 表示全局

show session status like 'Com_______';

主要查看select、insert、update、delete四种情况,Value 表示执行的次数。如果 select 次数占大部分,也侧面的告诉了我们 sql 优化的方向,可以考虑给数据库表添加索引来提升查询效率。

方式二:慢查询日志

方式一找到了 sql 优化的方向,因此现在我们需要找到具体的慢 sql。刚好 mysql 也提供了慢查询日志,慢查询日志记录了执行时间超过指定参数(long_query_time,单位:秒。默认是10秒)的所有 sql 语句的日志,默认是没有开启的,需要我们修改配置文件。

  • 如果是 Linux 系统下的 mysql,配置文件为:etc/my.cnf

// 开启慢查询日志

slow_query_log=1

long_query_time=2 // 慢查询设置的阈值

  • 由于本次我的演示为 Windows 版本的 mysql,修改慢查询配置分为指令和配置文件修改。
    • 配置文件:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini,具体配置文件为my.ini,如果路径不对可自行查询自己电脑的路径。

    • 指令修改:show variables like '%quer%';

      show variables like '%quer%'; 用于查看 mysql 的各项配置。

      set global slow_query_log='ON'; // 开启慢查询日志

      set global slow_query_log_file='D:/logs/slow-sql-log.log' // 重新设置慢查询的存放路径

    • 演示:我已将 long_query_time 修改为 2 秒,person表中插入了一千七百多万行数据。

      演示:select * from person;

      然后查看慢查询日志文件:

      查看具体的 sql 和耗时后,就可以针对该条 sql 进行优化了。

方式三:show profiles(详情)

方式二介绍的慢查询日志也有一点的弊端,假如有一条很简单的 sql,但是执行时间为 1.99 秒,因此就不会被记录到日志文件中,但是这确实也是存在的一种慢查询情况,因此引入 show profiles。show profiles 能够在做 sql 优化时帮助我们了解时间都耗费在哪里去了。

  • show profiling :查看当前 mysql 是否支持 prifile 操作

    select @@hava_profiling;

  • profiling 默认是关闭的,开启 profiling

    select @@profiling; // 查询结果0表示关闭状态,1表示开启

    set profiling = 1; // 开启

  • 执行几条 sql,然后查看 profiling

    select * from person;

    select * from person where id = 70935;

    select * from person where name = '姓名test';

    select count(*) from person;

  • 查看 show profiles

    具体的耗时和 sql 就展示出来了。

    • 查看指定 query_id 的 sql 语句各个阶段的耗时情况。

      show profile for query 2; // 查看query_id 为 2 的耗时情况

    • 查看指定 query_id 的 sql 语句 cpu 的使用情况。

      show profile cpu for query 2; // 查看query_id 为 2 的耗时情况

以上统计情况都仅供我们参考。

相关推荐
PGCCC9 分钟前
【PGCCC】Postgresql 存储设计
数据库·postgresql
PcVue China2 小时前
PcVue + SQL Grid : 释放数据的无限潜力
大数据·服务器·数据库·sql·科技·安全·oracle
魔道不误砍柴功4 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
锐策4 小时前
〔 MySQL 〕数据库基础
数据库·mysql
远歌已逝5 小时前
管理Oracle实例(二)
数据库·oracle
日月星宿~5 小时前
【MySQL】summary
数据库·mysql
爱吃土豆的程序员5 小时前
在oracle官网下载资源显示400 Bad Request Request Header Or Cookie Too Large 解决办法
java·数据库·oracle·cookie
睿思达DBA_WGX6 小时前
Oracle 11g rac 集群节点的修复过程
数据库·oracle
尘浮生6 小时前
Java项目实战II基于微信小程序的移动学习平台的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·学习·微信小程序·小程序
希忘auto6 小时前
详解MySQL安装
java·mysql