MySQL_SQL性能分析

SQL执行频次

  1. 语法:

    SHOW GLOBAL STATUS LIKE 'COM_+类型';
    COM_insert; 插入次数
    com_delete; 删除次数
    com_update; 更新次数
    com_select; 查询次数
    com_______; 
    

    在这里插入图片描述

  2. 注意:通过语法,可以查询到数据库的实际状态,就可以知道数据库是以增删改为主,还是以查询为主,如果是以查询为主,就可以考虑sql 的索引优化。

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

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

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

    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 是否开启

    select @@profiling;
    

    在这里插入图片描述

  3. 设置profile开启

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

    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. 语法:
    explain 查询语句
    

在这里插入图片描述
在这里插入图片描述

  • 演示 id 执行先后的

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

    explain select id from dept where name = '研发部'; allexplain select * from emp where id = 1;explain select * from user where phone = '13508895543'
  • key 演示

    explain select * from user where id  > 5
    

    索引效率验证

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

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

      在这里插入图片描述

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

      在这里插入图片描述

  • 给 name 字段添加索引列

    • name 没有添加索引列的时候
      在这里插入图片描述

    • 给name 添加了索引列之后
      在这里插入图片描述

  1. 结论:索引确实能提升查询速度,而且是质的提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/63823.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

湘大 XTU OJ 1097 排序 题解:c++ 函数库的使用 快速排序 归并排序 冒泡排序

一、链接 1097 排序 二、题目 Description N个整数&#xff0c;将其排序输出。 输入 第一行是一个整数K&#xff08;1<K<20&#xff09;&#xff0c;表示有多少个样例&#xff0c;每个样例的第一行是一个整数N&#xff08;1<N<1,000&#xff09;和一个字符X&…

使用vite创建Vue/React前端项目,配置@别名和Sass样式,又快又方便

Vite官方网站&#xff1a;Vite | 下一代的前端工具链 Vite 并不是基于 Webpack 的&#xff0c;它有自己的开发服务器&#xff0c;利用浏览器中的原生 ES 模块。这种架构使得 Vite 比 Webpack 的开发服务器快了好几个数量级。Vite 采用 Rollup 进行构建&#xff0c;速度也更快…

[SpringBoot3]基础篇

二、SpringBoot基础篇 2.1什么是SpringBoot SpringBoot是目前流行的微服务框架&#xff0c;倡导“约定优于配置”&#xff0c;其目的是用来简化新Spring应用的初始化搭建以及开发过程。SpringBoot提供了很多核心的功能&#xff0c;比如自动化配置starter&#xff08;启动器&a…

C语言——水仙花数字

//水仙花数字 //每个数位上的数字的 3次幂之和等于它本身 //列如&#xff1a;1531^35^33^3 #include<stdio.h> int main() {int i,x,y,z;for(i100;i<1000;i){xi%10;yi/10%10;zi/100%10;if(i(x*x*xy*y*yz*z*z))printf("%d\n",i);}return 0; } //输出100-1000…

opencv实战项目 实现手势跟踪并返回位置信息(封装调用)

OpenCV 是一个基于 Apache2.0 许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习软件库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。 需要提前准备opencv 和 mediapipe库 pip --default-timeout5000 install -i https://pypi.tuna.tsi…

怎么系统的学习机器学习、深度学习?当然是看书了

目录 前言 内容简介 学完本书&#xff0c;你将能够 作者简介 本书目录 京东自购链接 前言 近年来&#xff0c;机器学习方法凭借其理解海量数据和自主决策的能力&#xff0c;已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。自从Ale…

论文阅读:《Waymo Public Road Safety Performance Data》

文章目录 1 背景2 方法2.1 数据来源2.2 碰撞数据 3 碰撞事件分析4 讨论 1 背景 这篇文章是讲waymo道路安全性能数据分析的&#xff0c;主要想表达的是waymo自动驾驶系统在安全上面的出色表现&#xff0c;以向政府、大众提高自己产品的公信力。 这篇文章分析的数据是自从2019年到…

《人月神话》:我所遇见的“焦油坑”

最近在读《人月神话》这本书。 发现大部分task延期和研发关系不是很大&#xff0c;技术为业务服务&#xff0c;但是偿还不了业务债。 焦油坑的概念源自于挖掘坑井时的一种不幸状况。当挖掘坑井时&#xff0c;首先会进入表土层&#xff0c;进展颇快。但接下来遇到了沥青或泥浆…

C++ 学习系列3 -- 函数压栈与出栈

在C中&#xff0c;函数压栈&#xff08;函数调用&#xff09;和出栈&#xff08;函数返回&#xff09;是函数调用过程中的两个关键步骤。下面将逐步解释这两个过程&#xff1a; 一 函数压栈与出栈过程简介 函数压栈&#xff08;函数调用&#xff09;的过程如下&#xff1a; …

【Bert101】变压器模型背后的复杂数学【01/4】

一、说明 众所周知&#xff0c;变压器架构是自然语言处理&#xff08;NLP&#xff09;领域的突破。它克服了 seq-to-seq 模型&#xff08;如 RNN 等&#xff09;无法捕获文本中的长期依赖性的局限性。变压器架构被证明是革命性架构&#xff08;如 BERT、GPT 和 T5 及其变体&…

RocketMQ 延迟消息

RocketMQ 延迟消息 RocketMQ 消费者启动流程 什么是延迟消息 RocketMQ 延迟消息是指&#xff0c;生产者发送消息给消费者消息&#xff0c;消费者需要等待一段时间后才能消费到。 使用场景 用户下单之后&#xff0c;15分钟未支付&#xff0c;对支付账单进行提醒或者关单处理…

走进知识图谱(二)【世界知识图谱篇】知识表示的经典模型与平移模型及基于复杂关系建模的知识表示学习

上篇文章提到&#xff0c;该系列文章将主要围绕世界知识图谱和语言知识图谱这两大类知识图谱进行展开&#xff0c;并且提到知识图谱的主要研究包括了知识表示学习、知识自动获取和知识的推理与应用三大部分。今天主要介绍世界知识图谱的知识表示学习&#xff0c;其中包括经典的…