MySQL学习(13):SQL优化:查看SQL语句性能的方法

1.查看SOL执行频率

MySQL客户端连接成功后,通过如下指令,可以查看当前数据库的insert、update、delete、select的访问频次:

show global status like 'Com_______';
#查看全局。后面是7个下划线

使用效果如下:

可以看到各条命令的使用次数。

一般都是查询命令使用最多,所以查询命令一般就是影响SQL性能的关键

2.慢查询日志

慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句。

MySQL的慢查询日志默认没有开启,如果不确定是否开启了,可以通过下图的命令查看:

如果没有开启,则需要在MySQL的配置文件/etc/my.cnf中添加如下信息:

# 开启MySOL慢日志查询开关
slow_query_log=1# 设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志
long _query_time=2

配置完毕之后,重启mysql服务。

systemctl restart mysqld

我用centos7、mysql8.3.0做到这一步时,mysql服务启动不了,但要是把配置文件/etc/my.cnf改回原样就又能开启mysql服务了,不知道为什么

然后就可以找到慢查询日志文件:/var/lib/mysql/localhost-slow.log

下图是一条超过了规定时间,被记载在慢查询日志文件中的SQL语句

可以看到,文件中记载了使用SQL语句的时间、用时、用户名、客户端名、库名等信息

3.profile

profile可以查看各个命令的耗时,还可以查看某条命令各个阶段的耗时

3.1查看mysql是否支持profile

select @@have_profiling;

像上图一样出现yes时,代表mysql支持profile

3.2查看profile是否开启、开启profile

select @@profiling;

像上图一样显示为0,代表profile没有开启;显示为1则代表已开启。

如果没有开启,可以通过以下命令开启:

set profiling=1;

3.3使用profile

(1)查看所有命令耗时

show profiles;

(2)查看命令各个阶段耗时

show profile [cpu] for query query-id;
#加上参数cpu,可以查看命令各个阶段占用cpu的情况
#query-id就是用show profile得到的各条命令第一列的数字编号

4.explain(最主要的查看手段)

在任意一句SQL语句开头加上explain或desc,就可以查看这条命令的许多信息。例如下图:

id

select查询的序列号。

id相同,执行顺序从上到下;id不同,值越大,越先执行

select_type

表示 seclect 的类型

SIMPLE:简单表。即不使用表连接或者子查询

PRIMARY:主查询,即外层的查询
UNION:UNION 中的第二个或者后面的查询语句
SUBQUERY:包含了子查询
type(最重要指标)

表示连接类型。

性能由好到差的连接类型为NULL、system、const、eq_ref、ref、range、index、all 。

all:遍历整个表

index:遍历整个索引
ref:使用了非唯一索引
const:只使用了主键索引或者唯一索引
null:不涉及表
*possible key显示可能应用在这张表上的索引,一个或多个。
*key实际使用的索引,如果为NULL,则没有使用索引。
*Key _len表示索引中使用的字节数,该值为索引字段最大可能长度,并非实际使用长度,在不损失精确性的前提下,长度越短越好

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

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

相关文章

npm install 打包时间优化

在使用 npm install 时,有几个参数和方法可以帮助优化安装时间,尤其是在开发和 CI/CD 环境中。以下是一些常见的优化方法和相关参数: 1. --prefer-offline 如前所述,--prefer-offline 优先从本地缓存中安装包,可以加…

android13读取cpu频率,并调整频率

总纲 android13 rom 开发总纲说明 目录 1.前言 2.频率类型 3.获取cpu可以调节的频率 4.获取当前频率 5.设置频率 6.最后我们写个脚本,来实现,可以通过参数获取所有cpu的频率,以及设置最大最小频率 6.1 获取cpu频率 6.2 设置最大cpu频率 6.3 设置最小 7.彩蛋 1.前…

Spring完整知识点汇总一

Spring简介 额外知识点 在之前的学习中我们在Service业务层创建Dao/Mapper数据访问层(持久层)的对象是通过工具类来获取对应Dao/Mapper数据访问层(持久层)的接口代理对象在此处我们不用工具类来获取对应Dao/Mapper数据访问层&…

linux 安装 大模型ollama

安装ollama curl -fsSL https://ollama.com/install.sh | sh运行ollama3 ollama run ollama3模型很多ollama3、ollama2、Code Liama等 整体流程 创建模型 ollama create mymodel -f ./Mydelfile拉取模型 ollama pull ollama3删除模型 ollama rm ollama3复制模型 ollama …

图论模型-迪杰斯特拉算法和贝尔曼福特算法★★★★

该博客为个人学习清风建模的学习笔记,部分课程可以在B站:【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili 目录 ​1图论基础 1.1概念 1.2在线绘图 1.2.1网站 1.2.2MATLAB 1.3无向图的…

15现代循环神经网络—GRU与LSTM

目录 1.门控循环单元 GRU关注一个序列门候选隐状态(candidate hidden state)隐状态总结从零开始代码实现代码简洁实现2.长短期记忆网络 LSTM门候选记忆单元(candidate memory cell)记忆单元隐状态代码1.门控循环单元 GRU GRU 是最近几年提出来的,在 LSTM 之后,是一个稍微简…

关于 windows系统中双精度double除法编译优化导商变量不变化(代码调整+volatile) 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140592209 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

Python爬虫(2) --爬取网页页面

文章目录 爬虫URL发送请求UA伪装requests 获取想要的数据打开网页 总结完整代码 爬虫 Python 爬虫是一种自动化工具,用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持(如 requests、BeautifulSoup、Scrapy 等&#xf…

Redis 主从复制、哨兵机制关键参数与命令

建立主从连接 【命令】replicaof <服务器 A 的 IP 地址> <服务器 A 的 Redis 端口号> 形成主服务器节点和从服务器节点的关系&#xff0c;也可以让从节点成为二级主节点分摊压力。 【命令】psync 进行数据同步命令&#xff0c;会携带 runID 和 offset。 从节点…

基于IEKF迭代扩展卡尔曼滤波算法的数据跟踪matlab仿真,对比EKF和UKF

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于IEKF迭代扩展卡尔曼滤波算法的数据跟踪matlab仿真,对比EKF和UKF.仿真输出误差收敛曲线和误差协方差收敛曲线。 2.测试软件版本以及运行结果展示 MATLAB2022…

laravel框架基础通识-新手

常用目录及其解析 routes 该目录为路由目录 一般根据api uri可以反向查找对应路由及其controller&#xff0c;目录下的文件名一般和url的第一级对应为了规范&#xff0c;然后根据根据里面具体分组和别名对应拼接对应路由url&#xff0c;后面对应的则是controller&#xff0c…

springboot 配置 spring data redis

1、在pom.xml引入父依赖spring-boot-starter-parent&#xff0c;其中2.7.18是最后一版支持java8的spring <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</…

HTML5+ push消息推送

HTML5 push消息推送 push消息推送关键 API 介绍plus.pushaddEventListenerclearcreateMessagegetAllMessagegetClientInfosetAutoNotificationremove 实践消息推送开启权限 push消息推送 HTML5 的 Push 消息推送功能是一个强大的特性&#xff0c;它允许开发者在 Web 应用中实现…

助燃新质生产力,魔珐科技亮相IMC2024制造业数字科技大会展示有言AIGC视频工具价值

2024年7月19日&#xff0c;IMC2024第八届制造业数字科技大会在上海盛大开幕&#xff0c;本次大会以《向“智”而行》为主题&#xff0c;250智能制造行业数字化转型企业、行业领军者及实践者共聚一堂&#xff0c;共同助力企业增强技术“硬核力”&#xff0c;为新质生产力蓄势赋能…

Matlab仿真教程

什么是仿真&#xff1f; 仿真是一种使用数学模型和算法来模拟和分析实际系统或过程的技术。仿真可以帮助我们更好地理解系统的行为、优化系统的性能和预测系统的结果。 Matlab仿真 Matlab是一种广泛使用的仿真和分析工具。它提供了丰富的函数库和工具&#xff0c;可以用来解…

buuctf web 第五到八题

[ACTF2020 新生赛]Exec 这里属实有点没想到了&#xff0c;以为要弹shell&#xff0c;结果不用 127.0.0.1;ls /PING 127.0.0.1 (127.0.0.1): 56 data bytes bin dev etc flag home lib media mnt opt proc root run sbin srv sys tmp usr var127.0.0.1;tac /f*[GXYCTF2019]Pin…

最新全新UI异次元荔枝V4.4自动发卡系统源码

简介&#xff1a; 最新全新UI异次元荔枝V4.4自动发卡系统源码 更新日志&#xff1a; 1增加主站货源系统 2支持分站自定义支付接口 3目前插件大部分免费 4UI页面全面更新 5分站可支持对接其他分站产品 6分站客服可自定义 7支持限定优惠 图片&#xff1a; 会员中心截图&…

多类支持向量机损失(SVM损失)

(SVM) 损失。SVM 损失的设置是&#xff0c;SVM“希望”每个图像的正确类别的得分比错误类别高出一定幅度Δ。 即假设有一个分数集合s[13,−7,11] 如果y0为真实值&#xff0c;超参数为10&#xff0c;则该损失值为 超参数是指在机器学习算法的训练过程中需要设置的参数&#xf…

学习并测试SqlSugar的单库事务功能

SqlSugar支持单库事务、多租户事务、多库事务&#xff0c;本文学习并测试单库事务的基本用法。   使用SqlSugarClient类、ISqlSugarClient接口都可以创建SqlSugarClient数据库操作实例&#xff0c;其区别在于&#xff0c;针对单库而言&#xff0c;SqlSugarClient类支持调用Be…

【python】NumPy运行报错分析:IndexError——数组索引越界问题

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…