【数据库】MySQL性能分析和优化

导语

当数据量非常庞大时,使用MySQL进行select操作可能会出现耗时特别多的情况。例如:在一张百万数据的表格good中执行select * from good;查询耗时可能需要十几秒,让客户等待十几秒,是不被接受的, 此时我们就需要对相关语句进行性能分析并优化。下面就一起看一下MySQL的性能分析工具和优化策略。

一、MySQL性能分析

1、SQL执行效率

MySQL客户端连接成功后,通过 show [session|global] status命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的insert 、update、 delete、 select的访问频次。通过查看各种操作的执行频次就可判断是否需要进行性能优化。

show global status like 'Com______'

 

2、慢查询日志

慢查询日志记录了所有执行时间超出阈值(指定参数 long_query_time ,单位:秒,默认10秒)的所有SQL语句的日志。MySQL慢查询日志默认没有开启,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:

#开启慢查询日志
slow_query_log=1

#修改慢查询时间(单位秒)
long_query_time=2

配置完毕之后,通过以下指令重新启动MySQL服务器进行测试,查看慢日志文件中记录的信息(/var/lib/mysql/localhost-slow.log).

 上图就是我执行select avg(salary) from salaries; 查询语句花费3.763931秒,超过了阈值2秒,所以记录在慢查询日志中。

3、profile

show profiles 能够在做SQL优化时帮助我们了解事件都耗费到哪里去了。通过 have_profiling 参数,能够看到当前MySQL是否支持profile操作。

 select @@have_profiling;

【结果说明】:yes 表示支持profiling;no 表示不支持

默认profiling是关闭的,可以通过set语句在session|global级别开启profiling:

set profiling=1;  //开启profiling

 

 【结果说明】: 1 表示profiling已经开启;0 表示未开启,需要set profiling=1;手动开启。

 在执行一系列SQL业务操作后,可以通过如下指令查看指令的执行耗时情况:

#查看每一条SQL的耗时基本情况
show profiles;

 上图是当前会话中我执行的每一条SQL的耗时基本情况。

#查看指定query_id的SQL语句各个阶段的耗时情况
show profile for query query_id;


#查看指定query_id的SQL语句cpu使用情况
show profile cpu for query query_id;

 

上图是一个示例,它们执行的行数可能不一样,但是我们可以从结果中发现这条SQL语句主要耗时在哪个阶段。

【小结】profile可以看到每条SQL语句的耗时及主要耗时在哪个阶段。

4、explain执行计划

使用 EXPLAIN 或 DESC命令获取MySQL如何执行select语句的信息,包括在select语句执行过程中表如何连接和连接的顺序。

#使用语法:直接在select语句前加上关键字explain或desc
explain select语句;

explain 执行计划详细参数:

参数 参数说明
id select查询序列号,表示查询中执行select子句或者操作表的顺序(id相同,执行顺序从上到下;id 不同,值越大越先执行)。
select_type select类型,常见取值有SIMPLE(简单表,表示不使用表连接或子查询)、PRIMARY(主查询,外层的查询)、UNION(UNION中的第二个或后面的查询语句)、SUBQUARY(select/where之后包含子查询)
type 连接类型,性能由好到差的连接类型为NULL、system、const、eq_ref、ref、range、index、all
possible_key 显示可能应用的索引(一个或多个)
key 实际使用的索引,如果为NULL,则没有用索引。
ken_len 表示索引中使用的字节数,该值为索引字段最大可能长度,并非实际使用长度,在不损失精确性的前提下,长度越短越好
rows 预计需要扫描的记

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

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

相关文章

NLP论文阅读记录 - 2022 W0S | 基于Longformer和Transformer的提取摘要层次表示模型

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 A Hierarchical Representation Model Based on Longformer and …

鸿蒙应用开发尝鲜:初识HarmonyOS

初识HarmonyOS 来源:华为官方网站 : https://developer.huawei.com/ 相信大家对鸿蒙应用开发也不在陌生,很多身处互联网行业或者不了解的人们现在也一定都听说过华为鸿蒙.这里我将不再说废话,直接步入正题 鸿蒙应用开发语言 HarmonyOS应用开发采用的是ArkTS语言,ArkTS是在Typ…

WEB前端人机交互导论实验-实训2格式化文本、段落与列表

1.项目1 文本与段落标记的应用&#xff1a; A.题目要求: B.思路&#xff1a; &#xff08;1&#xff09;首先&#xff0c;HTML文档的基本结构是通过<html>...</html>标签包围的&#xff0c;包含了头部信息和页面主体内容。 &#xff08;2&#xff09;在头部信息…

深度学习中的稀疏注意力

稀疏注意力 文章目录 一、稀疏注意力的特点 1. 单头注意力&#xff08;Single-Head Attention&#xff09; 2. 多头注意力&#xff08;Multi-Head Attention&#xff09; 3. 稀疏注意力&#xff08;Sparse Attention&#xff09; 二、稀疏注意力的示意图 三、与Flash Attention…

HTML--CSS--字体、文本样式

字体样式 属性作用font-family字体类型font-size字体大小font-weight字体粗细font-style字体风格color字体颜色 font-family 字体类型 用法&#xff1a; 如下&#xff0c;定义 div元素内的字体&#xff0c;默认是宋体&#xff0c;要设定其他字体就用这个属性进行设定&#x…

汽车ECU的虚拟化技术初探(四)--U2A内存管理

目录 1.内存管理概述 2. 内存保护功能 2.1 SPID 2.2 Slave Guard 3.小结 1.内存管理概述 为了讲清楚U2A 在各种运行模式、特权模式下的区别&#xff0c;其实首先应该搞清楚不同模式下可以操作的寄存器有哪些。 但是看到这个寄存器模型就头大。 再加上之前没有研究过G4MH…

CSS 雷达监测效果

<template><view class="center"><view class="loader"><view></view></view></view></template><script></script><style>/* 设置整个页面的背景颜色为深灰色 */body {background-col…

[NSSCTF Round#16 Basic]RCE但是没有完全RCE

[NSSCTF Round#16 Basic]RCE但是没有完全RCE 第一关 <?php error_reporting(0); highlight_file(__file__); include(level2.php); if (isset($_GET[md5_1]) && isset($_GET[md5_2])) {if ((string)$_GET[md5_1] ! (string)$_GET[md5_2] && md5($_GET[md…

【AIGC】AnimateDiff:无需定制化微调的动画化个性化的文生图模型

前言 Animatediff是一个有效的框架将文本到图像模型扩展到动画生成器中&#xff0c;无需针对特定模型进行调整。只要在大型视频数据集中学习到运动先验知识。AnimateDiff就可以插入到个性化的文生图模型中&#xff0c;与Civitai和Huggingface的文生图模型兼容&#xff0c;也可…

docker部署私人云盘

目录 1.安装 2.登陆 1.安装 mkdir -p /opt/alist docker run -d --restartalways -v /opt/alist:/opt/alist/data -p 5244:5244 --name"alist" xhofe/alist:latest 2.登陆 ip:5224 默认账户admin 密码在日志中

逆水行舟 不进则退

目录 一、前言 二、2023年度总结 三、2024展望未来 一、前言 这是我从工作以来到现在最喜欢的一句话&#xff0c;我想把这句话送给自己也想送给大家。 2019年7月实习到现在已经过去了四年多&#xff0c;进入2024年也迎来了我工作生涯的第五个年头。 在这个行业里&#xff…

《教育界》期刊怎么投稿发表论文?

《教育界》是国家新闻出版总署批准的正规教育类期刊&#xff0c;由广西师范大学主管&#xff0c;广西师范大学出版社集团有限公司主办&#xff0c;面向国内外公开发行&#xff0c;旨在追踪教育新动向&#xff0c;探讨教育改革与管理、办学与教育教学经验等&#xff0c;为广大一…

Linux scp命令 服务器之间通讯

目录 一. scp命令简介二. 本地服务器文件传输到远程服务器三. 本地服务器文件夹传输到远程服务器 一. scp命令简介 scp&#xff08;Secure Copy Protocol&#xff09;是用于在Unix或Linux系统之间安全地复制文件或目录的命令。 它使用SSH&#xff08;Secure Shell&#xff09;…

等保测评流程是什么样的?测评周期多久?

等保测评流程是什么样的&#xff1f;测评周期多久&#xff1f; 等保测评一般分成五个阶段&#xff0c;定级、备案、测评、整改、监督检查。 1.定级阶段 针对用户的信息系统有等保专家进行定级&#xff0c;一般常见的系统就是三级系统或者是二级系统。在这里有一个小的区分&am…

【ArcGIS微课1000例】0088:计算城市建筑物朝向(矩形角度)

文章目录 一、实验描述二、实验数据三、角度计算1. 添加字段2. 计算角度四、方向计算一、实验描述 矩形要素具有长轴和短轴,其长轴方向也称为矩形面的主角度,可用于确定面要素的走向趋势。根据该方向参数,可以对具有矩形特征的地理对象进行方向分析,且适用于很多应用场景,…

8.1 Centos安装部署Redis

文章目录 前言一、下载Redis二、编译Redis三、配置redis.conf四、启动Redis服务端五、启动Redis客户端测试前言 本文将手把手演示在CentOS7上安装部署Redis。 一、下载Redis 可以使用wget命令进行下载,这里下载到/app目录 wget http://download.redis.io/releases/redis-5.…

Python爬虫学习笔记(一)---Python入门

一、pycharm的安装及使用二、python的基础使用1、字符串连接2、单双引号转义3、换行4、三引号跨行字符串5、命名规则6、注释7、 优先级not>and>or8、列表&#xff08;list&#xff09;9、字典&#xff08;dictionary&#xff09;10、元组&#xff08;tuple&#xff09;11…

计算机毕业设计 | SpringBoot+vue的医院门诊预约挂号系统(附源码)

1&#xff0c;绪论 项目背景 预约挂号&#xff0c;挂专家号更是“一号难求”&#xff0c;这是当前许多大型医院的普遍现象。预约挂号是各地近年来开展的一项便民就医服务&#xff0c;旨在缩短看病流程&#xff0c;节约患者时间。这种预约挂号大多通过医疗机构提供的电话或者网…

视频号小店发展前景怎样?适合新手入驻吗?

我是电商珠珠 视频号于22年7月发展了属于自己的平台-视频号小店。作为一个发展了才一年的平台来说&#xff0c;很多人都不敢入驻&#xff0c;害怕它很快就会垮掉。 我们团队在22年10月的时候&#xff0c;开始入驻其中。发现它的玩法和抖音小店相比并没有什么两样。 在刚开始…

电脑定时关机应用

这是一个Python应用。家里卧室装了新电视&#xff0c;HDMI连接笔记本追剧还是很愉快的。可是经常睡着&#xff0c;自然忘了关机。搜了一大圈&#xff0c;都是用命令行或者bat解决。商店里的应用也不好用&#xff0c;有些还收费。于是萌生了自己写一个定时关机应用的想法。利用N…