MySQL_SQL性能分析

SQL执行频次

  1. 语法:

    sql 复制代码
    SHOW GLOBAL STATUS LIKE 'COM_+类型';
    COM_insert; 插入次数
    com_delete; 删除次数
    com_update; 更新次数
    com_select; 查询次数
    com_______; 
  2. 注意:通过语法,可以查询到数据库的实际状态,就可以知道数据库是以增删改为主,还是以查询为主,如果是以查询为主,就可以考虑sql 的索引优化。

慢查询日志(可以根据此日志看是否需要优化sql)

  1. 概述:慢查询日志记录了超过指定时间的查询sql,指定参数(long_query_time,单位是秒,默认值是10秒)

  2. 如何查看慢查询功能是否打开?

    sql 复制代码
    show variables like 'slow_query_log';


  3. 参数说明

    • slow-query-log=1 代表开启 =0 代表关闭
    • long_query_time=10 代表慢查询超过10秒日志会记录
    • slow_query_log_file 慢查询的日志文件
  4. 演示慢查询

    • 把慢查询打开 slow-query-log=1
    • 把慢查询时间设置段 1秒 long_query_time=1
    • 重启一下mysql 的服务
  5. 分析慢查询日志

    • 当sql 出现到慢查询日志中的时候,就可以考虑对这条sql 进行优化了。

Profile 详情

  1. 概述:show profiles 能够用来做SQL优化时,协助我们了解时间消耗

  2. 查看Profile 是否开启

    sql 复制代码
    select @@profiling;
  3. 设置profile开启

    sql 复制代码
    set [session/global] profiling=1
  4. 同过profile了解时间消耗

    sql 复制代码
    select * from user;
    select count(*) from user;
    select * from user where id = 10;
    select * from user where name = '荆轲'
    • 使用profiles文件观察时间消耗
      • show profiles;(每次执行,query_id 都会变)
      • show profile for query query_id;(注意query_id 是使用showprofiles 查询出来的)
      • show profile cpu for query query_id;可以查询cpu占用

explain

  1. explain 或者 desc 都可以获取select语句的查询信息

  2. 语法:

    sql 复制代码
    explain 查询语句


  • 演示 id 执行先后的

    sql 复制代码
    explain select * from emp where dept_id = (select id from dept where name = '研发部')
  • 演示 type(const 使用主键或者唯一索引的时候)

    sql 复制代码
    explain select id from dept where name = '研发部'; all
    
    explain select * from emp where id = 1;
    
    explain select * from user where phone = '13508895543'
  • key 演示

    sql 复制代码
    explain select * from user where id  > 5

    索引效率验证

  • 添加主键索引(添加的时候,需要维护索引数据,所以速度较慢)

    • 没有主键索引的时候耗时情况

    • 添加了主键索引的时候耗时情况

  • 给 name 字段添加索引列

    • name 没有添加索引列的时候

    • 给name 添加了索引列之后

  1. 结论:索引确实能提升查询速度,而且是质的提升。
相关推荐
jnrjian几秒前
ORA-39012: Client detached EXPDP stop task DBMS_DATAPUMP
oracle
青槿吖26 分钟前
第二篇:告别XML臃肿配置!Spring注解式IOC/DI保姆级教程,从入门到真香
xml·java·开发语言·数据库·后端·sql·spring
运维 小白1 小时前
2. 部署mysql服务并监控mysql
数据库·mysql·adb
聪明人1 小时前
macOS安装Redis
数据库·redis·macos
北漂Zachary2 小时前
Mysql中使用sql语句生成雪花算法Id
sql·mysql·算法
weixin_505154462 小时前
Bowell Studio:重塑工业互联网时代的装配制造与运维检修
运维·数据库·人工智能·制造·数字孪生·3d产品配置器·3d交互展示
sa100272 小时前
淘宝商品详情 API 接口开发实战:item_detail 调用、参数与 Python 示例
linux·数据库·python
sbjdhjd2 小时前
RHCE | Web 服务器与 Nginx 全栈详解
linux·nginx·http·云原生·oracle·架构·web
小光学长2 小时前
基于ssm的膳食健康管理系统e6whl4q7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·开发语言·数据库·学习·ssm
一个天蝎座 白勺 程序猿2 小时前
KingbaseES融合数据库:一库多能,企业数据管理新思路
数据库·性能优化·kingbasees·金仓数据库