MySQL高级第六篇:数据库性能分析与优化

MySQL高级第六篇:数据库性能分析与优化

  • 一、数据库服务器优化步骤概述
  • 二、慢查询日志:记录执行慢的SQL
    • 1. 开启慢查询日志
    • 2. 设置long_query_time
    • 3. 查看慢查询数与慢查询SQL
  • 三、分析查询语句:EXPLAIN
    • 1. 概述
    • 2.EXPLAIN各列的含义

一、数据库服务器优化步骤概述

  • 1.观察服务器状态,看是否存在周期性波动,是的话可以尝试加缓存或者调整缓存失效策略
  • 2.否则考虑开启慢查询日志,找出比较慢的SQL语句;
  • 3.分析SQL语句:EXPLAIN,SHOW PROFILE
  • 4.如果是因为SQL等待时间比较长,考虑调整服务器参数
  • 5.如果是因为SQL执行时间比较长,考虑优化索引、SQL语句本身或者表设计
  • 6.如果以上都不能解决,考虑是否SQL查询达到瓶颈
  • 7.这时需要考虑读写分离,分库分表等。

二、慢查询日志:记录执行慢的SQL

  • 默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。
  • 如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。
  • 慢查询日志支持将日志记录写入文件。

1. 开启慢查询日志

  • 开启前先查询了一下是关闭状态,然后设置开启,报错要注意有些参数要加 global
    在这里插入图片描述

2. 设置long_query_time

  • 默认阈值为10s,比较长,自己可以更改,sql语句设置是临时设置,如下:
    在这里插入图片描述
  • 想要永久修改,需要改配置文件:
    [mysqld]
    s1ow_query_1og=ON  #开启慢查询日志的开关
    slow_query_log_file=/var/lib/mysql/ad-slow.log   #慢查询日志的目录和文件名信息
    1ong_query_time=3   #设置慢查询的阀值为3秒,超出此设定值的SQL即被记录到慢查询日志
    log_output=FILE
    

3. 查看慢查询数与慢查询SQL

SHOW GLOBAL STATUS LIKE '%Slow_queries%;

查找慢查询SQL,MySQL提供了慢查询分析工具:mysqldumpslow

三、分析查询语句:EXPLAIN

1. 概述

  • 定位了查询慢的SQL之后,就可以使用EXPLAIN 或 DESCRIBE工具做针对性的分析查询语句。DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。
  • MySQL中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供它认为最优的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等。
  • MySQL为我们提供了EXPLAIN语句来帮助我们查看某个查询语句的具体执行计划,看懂EXPLAIN语句的各个输出项,可以有针对性的提升我们查询语句的性能。

2.EXPLAIN各列的含义

在这里插入图片描述

  • id注意事项

    • id如果相同,可以认为是一组,从上往下顺序执行
    • 在所有组中,id值越大,优先级越高,越先执行
    • id号每个号码,表示一趟独立的查询,一个sq的查询趟数越少越好
  • type注意事项

    • 执行计划的一条记录就代表着MySQL对某个表执行查询时的访间方法,又称“访问类型”,其中 type 列就表明了这个访问方法是啥,是较为重要的一个指标。
    • 完整的访问方法如下:system,const,eq_ref,ref,fulltext,ref_or_null,index_merge,unique_subquery,index_subquery,range,index,ALL(,越往前效果越好,越往后越糟糕
    • 当表中只有一条数据,且使用存储引擎的统计数据是精确的,如MyISAM,访问方式为 system
    • const :根据主键或者唯一二级索引列与常数进行等值匹配
    • 如果使用索引获取某些范围区间的记录,那么就可能使用到 range 访问方法
    • ALL:最熟悉的全表扫描
    • SQL性能优化的目标:至少要达到range级别,要求是ref级别,最好是consts级别。(阿里巴巴开发手册要求)
  • Extra

    • 通过这些额外信息,可以更准确的理解MySQL到底将如何执行给定的查询语句。

EXPLAIN不考虑各种Cache,并且不能显示执行查询时所作的优化工作等具体信息,只能告诉我们一个大概估算的统计结果。

如果想跟踪优化器做出的各种决策,可以使用 OPTIMIZER_TRACE ,它可以追踪如访问表的方法,各种开销转换等,并记录到一个表中。

以上就是数据库优化分析的步骤概述,接下来的文章将逐个详细分析数据库索引优化的具体情况…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【leetCode189】轮转数组

作者:日出等日落 专栏:leetCode刷题训练 要成功不需要什么特别的才能,只要把你能做的小事做得好就行了。 ——维龙 目录 题目: 第一种方法: 第二种方法: 第三种方法: 今…

UDP、TCP三次握手和四次挥手

-----UDP与TCP----- 相同点 tcp、udp都是工作在传输层进行数据传输(二进制标识文本或者视频或者图片) 不同点 tcp基于连接,保障传输的安全udp基于非连接,保障传输的速度 -----TCP的三次握手----- 过程 为什么不是两次握手&a…

PMP考试备考:你不知道的8个常考概念

PMP考试即将到来,为便于广大考生在考试前查漏补缺,给大家准备了PMP考试中常考的八个重要概念,包括敏感性分析、德尔菲技术等,快来看看吧。 01敏感性分析 敏感性分析有助于确定哪些风险对项目具有最大的潜在影响。它有助于理解项…

UWB芯片DW3000之双边双向测距法

目录 双边双向测距 使用四个信息 使用三个信息 双边双向测距 使用四个信息 双边双向测距(DS-TWR)是基本的单边双向测距的扩展,其中使用两次往返时间测量并结合给出飞行时间结果,即使在相当长的响应延迟情况下也能减少误差。 带有四个信息的双面双向…

安全多方计算之八:Mix-Match

Mix-Match1. 混合网络基于ElGamal加密方案的混合网络2. PET协议3. Mix-Match协议4. 百万富翁问题的Mix-Match解决方案M.Jakobsson和A.Juels提出了基于Mix-Match的安全多方计算协议构造方法,该类协议包括Mix与Match两个阶段: Mix阶段:通过构造…

详解LinkedHashSet和LinkedHashMap

目录 一.LinkedHashSet和LinkedHashMap 1.基本介绍 2.与HashSet和HashMap的区别 3.LinkedHashSet和LinkedHashMap具体的方法 1.LinkedHashSet 2.LinkedHashMap 二.模拟代码实现LinkedHashMap 三.具体应用 一.LinkedHashSet和LinkedHashMap 1.基本介绍 顾名思义,根据名…

gpt4国内可以使用吗-chatgpt国内使用的软件排行榜

gpt4国内怎么用? 目前 OpenAI 尚未正式发布 GPT-4 模型,因此目前尚无法直接使用它。预计当GPT-4发布时,将通过OpenAI平台提供API以供使用者调用,同时新的API接口可能需要在不同国家/地区进行不同程度的注册或许可等手续。 当Ope…

php 修改服务器文件上传大小限制

输入docker cp mlfnginx:/etc/nginx/conf.d/pl.conf .输入vimpl.conf 修改nginx配置文件移动到图中所示位置client_max_body_size 按键盘”i”对图中的xxM修改成需要的大小,然后按”esc”,在按”:wq”,最后按回车键输入docker cp ./pl.con…

寻找2020 (蓝桥杯) JAVA

题目描述 小蓝有一个数字矩阵,里面只包含数字0 和2。小蓝很喜欢2020,他想找到这个数字矩阵中有多少个2020 。 小蓝只关注三种构成2020 的方式: 同一行里面连续四个字符从左到右构成2020。 同一列里面连续四个字符从上到下构成2020。 在一条从…

南京邮电大学通达学院《数学实验》MATLAB实验答案

南京邮电大学通达学院《数学实验》MATLAB实验答案一 声明二 MATLAB下载三 南京邮电大学通达学院《数学实验》练习一1.11.21.31.41.51.61.71.81.91.101.11![请添加图片描述](https://img-blog.csdnimg.cn/a3d3a094f6ea4dff85c0fd0bf40bbb44.jpeg)四月维夏,六月徂暑。…

百度文心一言可以完胜ChatGPT的4点可能性

文心一言,百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。但说实话,很多人拿他与ChatGPT相对比&#x…

项目经理注意!掌握这5个关键点,提升效率80%!

很多项目在刚接手时,遇到的问题种类多并且复杂,乍一看很令人头疼,但仔细梳理下来好像也没有那么难,只需要厘清以下5个关键点: 一、做好项目的五个关键 具体的思路就是: 明确事->找对人->排计划->定机制->…

Bulk vector export as SLD and GeoJson

QGIS插件,可以导出所有图层的GeoJson数据格式和SLD图层样式文件。 缺点:导出的文件名和图层名称不对应。

数据结构与算法:滑动窗口类题目总结

滑动窗口类型题目解题框架总结: class Solution:def problemName(self, s: str) -> int:# Step 1: 定义需要维护的变量们 (对于滑动窗口类题目,这些变量通常是最小长度,最大长度,或者哈希表)x, y ..., ...# Step 2: 定义窗口…

Node.js学习笔记——Node.js模块化

一、介绍 1.1.什么是模块化与模板? 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为模块化。 其中拆分出的每个文件就是一个模块,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块…

【树与二叉树】二叉树顺序结构实现以及堆的概念及结构--详解介绍

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:数据结构 🎯长路漫漫浩浩,万事皆有期待 文章目录1. 二叉树顺序结构2.…

Elasticsearch:Elasticsearch 容量规划

Elasticsearch 是一个可扩展的分布式系统,可为企业搜索、日志聚合、可观察性和安全性提供解决方案。 Elastic 解决方案建立在一个单一、灵活的技术堆栈之上,可以部署在任何地方。 要在自托管或云端运行生产环境 Elasticsearch,需要规划基础架…

Linux硬链接与软链接

图示区别 硬链接 具有相同inode节点号的多个文件互为硬链接文件;删除硬链接文件或者删除源文件任意之一,文件实体并未被删除;只有删除了源文件和所有对应的硬链接文件,文件实体才会被删除;硬链接文件是文件的另一个入…

贯穿设计模式第四话--里氏替换原则

🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是最爱吃鱼罐头,大家可以叫鱼罐头呦~🥳🥳🥳 从今天开始,将…

关于位运算的巧妙性:小乖,你真的明白吗?

一.位运算的概念什么是位运算?程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。位运算就是直接操作二进制数,那么有哪些种类的位运算呢?常见的运算符有与(&)、或(|)、异或(^)、…