MYSQL性能分析,Explain,Show Profile

news2024/10/7 19:28:41

文章目录

  • 一、MYSQL常见瓶颈
  • 二、Explain
    • Explain是什么
  • 三、Show Profile
  • 四、慢查询日志和全局查询日志


一、MYSQL常见瓶颈

  1. CPU: CPU饱和
  2. IO:磁盘IO速度过慢。
  3. 服务器的硬件性能瓶颈。

二、Explain

Explain是什么

使用explain关键字可以模拟优化器执行sql查询语句,从而知道mysql如何处理你的sql语句.使用方法是explain + sql语句
得到的结果的表头如下:
请添加图片描述

该表的各个属性的含义如下:

  • id : id指的是select查询的序列号,包含一组数字,表示在查询中执行select 子句或操作表的顺序。 id相同,执行顺序由上至下;id不同,id越大优先级越高 (如果是子查询subquery,id的序号会递增);越先被执行;id相同不同,同时存在
    请添加图片描述
    如上图中mysql的执行顺序为t3 -> t1 -> t2.

请添加图片描述

如上图中mysql的执行顺序是t3 -> derived2 -> t2. 注意两个id是1的可以视为一组: t2 和

  • select_type : 主要常见值如下:请添加图片描述

    1. simple: 简单的select查询,查询中不包子查询或者union。
    2. primary: 嵌套查询的最外面一部分
    3. subquery: 子查询
    4. derived: 在from列表中还包含的子查询会被标记为derived,mysql会递归执行这些子查询。
    5. union : 若第二个select出现在union之后,则会被标记为union,若union包含在from子句的子查询中,外层select会被标记为derived。
    6. union result:
  • table: 当前是在哪个表

  • type: 访问类型排列.包括八种值: all, index, range, ref, eq_ref,(const,system),NULL
    显示查询使用了何种类型,从最好到最差依次是: system(单表单行) > const > eq_ref(唯一性索引扫描,即对于每一个索引键,表中只有一条记录和之匹配) > ref(非唯一性索引扫描,返回匹配某个单独值的所有行) > range > index(索引) > ALL(全表扫描). 一般来说,得保证查询达到range级别,最好能达到ref级别。

  • possible_keys : 显示可能应用在这个表上的索引,一个或多个,查询涉及到的字段若存在索引则会被列出,但是不一定会被查询实际使用。

  • key: 实际使用的索引,如果为NULL,则没有使用索引; 查询中若使用了覆盖索引,则该索引仅出现在key列表中。

  • key_len: 索引中使用的字节数,长度越短越好。key_len显示的值为索引字段的最大可能长度而并非实际使用长度。

  • ref: 显示索引的哪一列被使用了,如const常量,sharedz_t2_col1(t1.id = t2.id)等

  • rows: 估算找到所需的记录所要读的行数。

  • Extra: 额外信息。 要避免在extra出现using file sort, using temporary。

三、Show Profile

是mysql提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于sql的调优的测量,默认情况下处于关闭状态并且保存最近15次的运行结果。

show profiles; //输出最近15次的sql语句和运行时间
show profile cpu,block io for query 3;//分析三号查询的完整查询周期

五种低性能的profile属性:

  1. Converting HEAP to MYISAM. //查询结果太大,内存都不够用了要往磁盘装
  2. Creating tmp table. //创建临时表,用完再删除。
  3. Copying to tmp table on disk. //把内存中的临时表复制到磁盘
  4. Copying to tmp table. //拷贝数据到临时表
  5. locked.

四、慢查询日志和全局查询日志

sql中内置了慢查询日志(记录查询时间超过了阈值的sql语句,禁止在生产环境使用因为会大大降低sql性能)和 全局查询日志 (禁止在生产环境使用同样也会大大降低sql性能 ).

在mysql的my.cnf中设置: general_log = 1, general_log_file = /path/logfile, log_output = FILE.

通过select * from mysql.general_log; 来查询general_log中的内容。


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YApi分析从NoSQL注入到RCE远程命令执行.md

0x00 前提 这个是前几个月的漏洞,之前爆出来发现没人分析就看了一下,也写了一片 Nosql注入的文章,最近生病在家,把这个写一半的完善一下发出来吧。 0x01 介绍 YApi是一个可本地部署的、打通前后端及QA的、可视化的接口管理平台…

【C++】命名空间

🏖️作者:malloc不出对象 ⛺专栏:C的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录前言一、命名空间产生的背景二、命名空…

【一天时间|简历模板】世界上最好的前端简历

一天时间系列文章是博主精心整理的面试热点问题和难点问题,吸收了大量的技术博客与面试文章,总结多年的面试经历,带你快速并高效地审视前端面试知识。直击技术痛点,主动出击,精密打击,这才是面试拿到高薪的…

网络基础知识(IP地址、TCP协议/IP协议、UDP协议、三次握手,四次挥手的过程、端口等的概念)

TCP/IP 协议 首先给大家说明的是,TCP/IP 协议它其实是一个协议族,包含了众多的协议,譬如应用层协议 HTTP、FTP、MQTT…以及传输层协议 TCP、UDP 等这些都属于 TCP/IP 协议。 所以,我们一般说 TCP/IP 协议,它不是指某…

unity-与js交互

title: unity-与js交互 categories: Unity3d tags: [unity, js, web, h5] date: 2023-03-05 00:09:52 comments: false mathjax: true toc: true unity-与js交互 前篇 官方 WebGL:与浏览器脚本交互 - https://docs.unity3d.com/cn/2021.1/Manual/webgl-interacting…

JavaWeb--JSP

JSP1 JSP 概述2 JSP 快速入门2.1 搭建环境2.2 导入 JSP 依赖2.3 创建 jsp 页面2.4 编写代码2.5 测试3 JSP 原理4 JSP 脚本4.1 JSP 脚本分类4.2 案例4.2.1 需求4.2.2 实现4.2.3 成品代码4.2.4 测试4.3 JSP 缺点5 EL 表达式5.1 概述5.2 代码演示5.3 域对象6 JSTL标签6.1 概述6.2 …

Android应用启动优化笔记整理

应用启动相关流程与优化 应用启动主要涉及SystemServer进程 和 app进程。 SystemServer进程负责app进程创建和管理、窗口的创建和管理(StartingWindow 和 AppWindow)、应用的启动流程调度等。 App进程被创建后,进行一系列进程初始化、组件初…

【LinkedList】| 深度剥析Java SE 源码合集Ⅰ

目录一. 🦁 LinkedList介绍二. 🦁 结构以及对应方法分析2.1 结构组成2.1.1 节点类2.1.2 成员变量2.2 方法实现2.2.1 添加add(E e)方法2.2.2 头尾添加元素Ⅰ addFirst(E e)Ⅱ addLast(E e)2.2.3 查找get(int index)方法2.2.4 删除remove()方法三. &#x…

【云原生】整合K8s + SpringCloudK8s + gRpc + RocketMQ + Istio + Envoy

背景本文把前面的代码整理一遍,不仅仅是demo层面,而是考虑到放进生产中使用,且尽可能用高版本,关于这块技术,网上的文章真是一言难尽,要么就是个概念,要么就是把官网的demo拿过来跑一遍&#xf…

图神经网络 pytorch GCN torch_geometric KarateClub 数据集

图神经网络 安装Pyg 首先安装torch_geometric需要安装pytorch然后查看一下自己电脑Pytorch的版本 import torch print(torch.__version__) #1.12.0cu113然后进入官网文档网站 链接: https://pytorch-geometric.readthedocs.io/en/latest/install/installation.html 安装自己…

【小破站下载工具】Python tkinter 实现网站下载工具,所有数据一键获取

目录前言开发环境本次项目案例步骤先展示下完成品的效果界面导入模块先创建个窗口功能按键主要功能代码编写功能一功能二功能三前言 最近很多同学想问我,怎么把几个代码的功能集合到一起? 很简单,写一个界面就行了,想要哪个代码…

黑马程序员7

算数运算符重载 运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 加号运算符 通过自己写函数,实现两个对象相加属性后返回新的对象 两种方式重载 成员函数方式重载 全局函数重载 上来 perso…

Go 内存分布

Go内存分布方式在C中,每个值在内存中只占据一个内存块(一段连续内存);但是,一些Go类型的值可能占据多个内存块。以后,我们称一个Go值分布在不同内存块上的部分为此值的各个值部(value part&…

网络安全平台测试赛 easyphp(phar脏数据处理)

昨天的比赛,14.00-17.00.时间有点紧张,比赛期间没拿下来这道 😭非常痛苦,很顺畅的思路 一步步想下来,卡在最后一步末尾脏数据处理了,最后时间到了 没打通,还需多练 这里本地复现一下&#xff1…

linux 进程及调度基础知识

引用Linux进程管理专题Linux进程管理与调度-之-目录导航Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)蜗窝科技-进程管理郭健: Linux进程调度技术的前世今生之“前世”郭健: Linux进程调度技术…

1.7 古典概型问题类型一——随机取数问题

(1)我的答案:一、信息首先7个数字全不相同二、分析七个数字全不相同意味着每次取出来的数都不一样,然后每次取出后选择少一种,为简单排列不含10和1这意味从8个数里面选且可以重复为重复排列3.10恰好出现两次隐含着两个问题,第一&a…

备考考研2数学

进度说明,开始形成自己的复习进度说明! 14:21 2023年2月28日星期二 武忠祥数学 截止目前,看完了01.高数基础01 14:21 2023年2月28日星期二 开始看02. 现在15:04 2023年2月28日星期二, 因为这2天的百度网盘不能进行解析了&…

初识HTML技术

文章目录一、为什么学习前端?二、第一个HTML文件VSCode三. HTML元素四. HTML页面一、为什么学习前端? 我们作为一个后端程序员,为什么还要学习前端,因为我们的终极目的是实现web开发,搭建网站,网站 前端 后端 比如我们随便…

最近几篇较好论文实现代码(附源代码下载)

《Towards Layer-wise Image Vectorization》(CVPR 2022) GitHub: github.com/ma-xu/LIVEInstallationWe suggest users to use the conda for creating new python environment.Requirement: 5.0<GCC<6.0; nvcc >10.0.git clone gitgithub.com:ma-xu/LIVE.gitcd LIVE…

一步一步学会给Fritzing添加元器件-丰富你的器件库

文章目录1、获取元器件文件2、单个添加元器件3、批量加入&#xff08;1&#xff09;、通过别人发布的bin文件加载&#xff08;2&#xff09;、终极大招&#xff08;拖&#xff09;4、制作自己器件文章出处&#xff1a; https://blog.csdn.net/haigear/article/details/12931545…