索引优化之Explain 及慢查询日志

2023-11-20

 

索引:本质是数据结构,简单理解为:排好序的快速查找数据结构,以索引文件的形式存储在磁盘中。
目的:提高数据查询的效率,优化查询性能,就像书的目录一样。
优势:提高检索效率,降低IO成本;排好序的表,降低CPU的消耗
劣势:索引实际也是一张表,该表保存了主键与索引字段,并指向实体表的记录,占用空间;降低更新表的速度(改数据表本身,也需要修改索引);花时间研究建立最优秀的索引。

 索引优化分析主要包括几个部分,其中对Explain关键字进行详细了解。

Explain关键字:使用Explain 关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。

Explain能干嘛:表的读取顺序、数据读取操作的操作类型、哪些索引可以使用、哪些索引被实际使用、表之间的引用、每张表有多少行被优化器查询。

Explain +SQL语句计划执行包含的信息:id |select_type |table |patitions |type |possible_keys |key |key_len |ref |rows |filtered |extra|

 

 二、查询截取分析主要包括5个部分:查询优化、慢日志查询、批量数据脚本、show profile、全局查询日志等信息,这里主要了解了2部分。

1、查询优化:永远小表驱动大表;Order by ;Group by

2、慢日志查询

图表里面主要包括是什么、怎么玩、日志分析工具,从左往右进行查看。

 

 

 

慢查询日志:Mysql提供的一种日志记录,运行时间超过long_querry_time值得SQL,会被记录到慢查询日志中。long_querry_time默认等于10s.

慢日志具体操作代码如下:

慢日志查询
SHOW VARIABLES LIKE 'long_query_time%';#查看慢查询的时间阈值,默认显示为10S

SHOW VARIABLES LIKE '%slow_query_log%';#查看是否开启

set global slow_query_log=1; #设置为1,开启慢查询日志

set global long_query_time=0.001;#设置慢查询的时间为0.001,超过0.001就显示为慢查询

select * from sleep(1); #睡眠1s

show global status like '%Slow_queries';#查询慢查询的条数,需要优化的条数

mysqldumpslow -s r -t /var/lib/mysql/RMT01-slow.log;#路径就是查询是否开启中show_query_log_file的文件路径

 

 

 

转载于:https://www.cnblogs.com/wendyw/p/11591983.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

索引优化之Explain 及慢查询日志 的相关文章

随机推荐

  • leetcode shell

    leetcode 195 第十行 cat file txt head n 10 tail n 1 cat file txt tail n 10 head n 1 第一种是先取出前10行 然后取出最后一行 但是不足10行 也可以取出最后一行
  • 2023年智能材料与表面国际会议(ICoSMS 2023)

    会议日期 2023 3 24 至 2023 3 26 会议简介 2023年智能材料与表面国际会议 ICoSMS 2023 重要信息 会议网址 www icosms org 会议时间 2023年3月24 26日 召开地点 中国上海 截稿时间
  • 深聊测开领域之:虫剂悖论

    测试免疫 1 初识虫剂悖论 2 应对虫剂悖论 2 1 更新测试策略 2 2 更新测试用例 1 初识虫剂悖论 提到 虫剂悖论 pesticide paradox 我相信很多人都没听说的 除非是生物学专业的同学或者砖家 虫剂悖论描述的是重复使用
  • Log4j2突发重大漏洞之解决方案

    漏洞描述 Apache Log4j2是一款优秀的Java日志框架 与Logback平分秋色 大量主流的开源框架采用了Log4j2 像Apache Struts2 Apache Solr Apache Druid Apache Flink等均
  • wget: 无法解析主机地址

    root hadoop102 wget O etc yum repos d CentOS Base repo http mirrors aliyun com repo Centos 6 repo 2018 10 09 14 22 53 ht
  • 云服务器车牌识别系统,人脸识别/车牌识别系统安防视频云服务EasyCVR支持大华SDK语音对讲...

    TSINGSEE青犀视频平台EasyCVR内 已经能够通过国标GB28181协议实现语音对讲功能 在大华SDK的研发方面 也开发了该功能 本文和大家分享下 EasyCVR语音对讲主要用于实现本地平台与前端设备所处环境间的语音交互 解决本地平
  • SQLite的shell简单使用

    下载最新的shell for windows http www sqlite org sqlite shell win32 x86 3070800 zip 解压后得到 sqlite3 exe1 1 创建数据库 C sqlite3 gt sq
  • 使用moment.js推算当前时间的前多少天

    在项目中遇到一个问题 推算当前时间的前7天 30天 当然使用js一点点推算可以的 但是可以使用moment js 简单就可以推算出来 获取当前时间 moment format YYYY MM DD HH mm ss 当前时间的前7天 mom
  • QLineEdit和QPushButton实现了输入用户名、密码并验证的功能

    使用QLineEdit和QPushButton实现了输入用户名 密码并验证的功能 该程序使用正则表达式限制了用户名和密码只能包含数字 字母和下划线 且长度在4到16个字符之间 如果输入的用户名和密码符合要求 则弹出一个消息框显示 登录成功
  • 【安装篇】- 基于 VMWARE Oracle Linux7.9 安装 Oracle19c RAC 详细配置方案

    作者 yanwei 来源 墨天轮 https www modb pro db 95684 大家好 我是 JiekeXu 很高兴又和大家见面了 今天和大家一起来看看 Linux7 9 安装 Oracle19c RAC 详细配置方案 欢迎点击上
  • Mockito的使用(二)——@InjectMocks、@Spy、@Mock

    项目中 有些函数需要处理某个服务的返回结果 而在对函数单元测试的时候 又不能启动那些服务 这里就可以利用Mockito工具 其中有如下三种注解 InjectMocks 创建一个实例 简单的说是这个Mock可以调用真实代码的方法 其余用 Mo
  • 鸿蒙系统可以微信吗,鸿蒙系统可以用微信吗?微信鸿蒙版本下载-游戏大玩家...

    微信是一款由腾讯开发的聊天社交软件 在这里你可以去进行和更多好友的交流 我们给你提供了多种不同的交流模式 享受更加独特的交流带给你的全新体验 使用语音 文字 表情包 图片 视频等等都种不同的方式 我们让大家们的交流更加的便利起来 微信鸿蒙版
  • Python+Opencv 调用USB摄像头(一)

    一 最简单的调用笔记本内置相机 import cv2 引入库 cap cv2 VideoCapture 0 while True ret frame cap read cv2 imshow Video frame 读取内容 if cv2 w
  • 10 微服务流程规范篇:高速迭代的研发过程需要怎样的规范?

    上一课时 我讲解了微服务质量保障体系的全景概览 本课时我主要讲解流程规范 高速迭代的研发过程需要怎样的规范呢 业务流程阶段 众所周知 产品研发是为业务服务的 在深入讲解产品研发流程之前 我们先整体看下业务流程 分为 3 个阶段 产品研发阶段
  • C++新特性

    std bind 概述 std bind 是一个C 函数模板 简单说它就像一个函数适配器 用来接受一个可调用对象 callable object 生成一个新的可调用对象来 适应 原对象的参数列表 该函数模板定义在头文件 include
  • Ubuntu - OpenSSH安装或升级

    1 准备安装包 openssl 1 0 2o tar gz wget https www openssl org source openssl 1 0 2o tar gz https www openssl org source opens
  • 插入排序超详解释,一看就懂

    目录 一 插入排序的相关概念 1 基本思想 2 基本操作 有序插入 二 插入排序的种类 三 直接插入排序 1 直接插入排序的过程 顺序查找法查找插入位置 2 使用 哨兵 直接插入排序 四 直接插入排序算法描述 五 折半插入排序 1 查找插入
  • linux 操作mysql 命令_linux下mysql操作命令大全

    Linux下掌握基本的mysql操作命令大全能够为你学习linux中mysql提供更好的帮助 下面由学习啦小编为大家整理了linux下mysql操作命令大全的相关知识 希望对大家有帮助 linux的mysql操作命令大全详解 linux的m
  • uniapp.request遇到的坑

    uniapp request遇到的坑 发起post请求的时候data接收不到参数 解决 发起请求中添加 uni request header content type application x www form urlencoded
  • 索引优化之Explain 及慢查询日志

    索引 本质是数据结构 简单理解为 排好序的快速查找数据结构 以索引文件的形式存储在磁盘中 目的 提高数据查询的效率 优化查询性能 就像书的目录一样 优势 提高检索效率 降低IO成本 排好序的表 降低CPU的消耗劣势 索引实际也是一张表 该表