成都科技网站建设电话咨询/营销策划与运营公司
SQL性能分析是数据库优化中重要的一环。通过分析SQL的执行频率、慢查询日志、PROFILE
工具以及EXPLAIN
命令,能够帮助我们识别出数据库性能的瓶颈,并做出有效的优化措施。以下将详细讲解这几种常见的SQL性能分析工具和方法。
一、SQL 执行频率
SQL执行频率的分析可以帮助我们了解数据库的负载情况,识别高频SQL语句,找出可能的性能瓶颈。
1.1 功能含义
SQL执行频率表示每种类型SQL语句的执行次数。了解这些语句的执行频率有助于优化系统的性能。频繁执行的SQL可能是系统的核心查询,也可能是重复无效的查询。
1.2 查看SQL执行频率的指令
MySQL提供了一系列状态变量,可以用于查看SQL的执行频率。我们可以通过以下命令查看:
SHOW [GLOBAL|SESSION] STATUS LIKE 'Com_%';
如:
show global status like 'Com_______'
此命令会返回当前MySQL实例中每类SQL语句的执行次数。例如:
- 下面查询 Com_selec为:137次,查询操作偏多
Variable_name | Value | |
---|---|---|
1 | Com_binlog | 0 |
2 | Com_commit | 0 |
3 | Com_delete | 2 |
4 | Com_import | 0 |
5 | Com_insert | 3 |
6 | Com_repair | 0 |
7 | Com_revoke | 0 |
8 | Com_select | 137 |
9 | Com_signal | 0 |
10 | Com_update | 0 |
11 | Com_xa_end | 0 |
注:
Com_select
:SELECT
语句的执行次数Com_insert
:INSERT
语句的执行次数Com_update
:UPDATE
语句的执行次数Com_delete
:DELETE
语句的执行次数
1.3 查询内容的含义
这些状态变量显示了不同类型SQL语句的执行频率,有助于我们了解数据库的负载特征。例如,频繁的SELECT
语句可能暗示需要优化查询或增加缓存,而频繁的INSERT
、UPDATE
和DELETE
语句则表明系统中有大量写操作。
1.4 对频率内容进行分析
分析SQL执行频率可以帮助我们识别潜在的性能瓶颈。例如:
- 高频
SELECT
:需要检查索引
、查询优化和缓存策略; - 高频
INSERT
、UPDATE
:需要检查事务管理、锁机制和写性能优化; - 高频
DELETE
:可能涉及数据清理策略,需要防止锁竞争和表碎片问题。
二、慢查询日志
慢查询日志用于记录执行时间超过设定阈值的SQL语句,有助于定位低效的查询。
2.1 功能含义
慢查询日志记录了执行较慢的SQL语句。通过分析这些日志,可以找出性能瓶颈并优化查询效率。
2.2 检查慢查询日志是否开启
可以通过以下命令查看是否已启用慢查询日志:
SHOW VARIABLES LIKE 'slow_query_log';
返回结果中,若slow_query_log
为ON
,表示慢查询日志已启用。
2.3 设置和开启慢查询日志
若慢查询日志未开启,可用以下命令启用:
SET GLOBAL slow_query_log = 'ON';
设定慢查询的时间阈值,可以通过如下命令调整:
SET GLOBAL long_query_time = 2; -- 设置为2秒
若需永久生效,可在MySQL配置文件my.cnf
中添加以下内容:位置:etc/my.cnf
slow_query_log = ON
long_query_time = 1
如图:
2.4 查看慢查询日志文件位置
使用以下命令查看慢查询日志文件位置:
SHOW VARIABLES LIKE 'slow_query_log_file';
如:
2.5 慢查询日志的内容案例
慢查询日志记录了每条慢查询的SQL语句、执行时间、锁等待时间等信息。示例如下:
# Time: 2024-11-08T12:00:00.000000Z
# Query_time: 2.000 Lock_time: 0.000 Rows_sent: 500 Rows_examined: 100000
SELECT * FROM orders WHERE customer_id = 1;
其中:
Query_time
:查询执行时间。Lock_time
:锁等待时间。Rows_sent
:返回的行数。Rows_examined
:扫描的行数。- 以及对应:
执行的sql
该示例中的查询扫描了10万行数据,但只返回了500行,可能需要优化。
三、PROFILE
PROFILE
工具是MySQL用于分析SQL语句执行过程的性能分析工具,可以显示每个SQL语句在执行的各个阶段所消耗的时间。
3.1 功能含义
PROFILE
能够精确到毫秒级别记录SQL执行过程的各个步骤,比如解析、优化、锁等待和执行时间等,有助于精确定位性能瓶颈。
3.2 检查是否支持PROFILE
首先,检查MySQL是否支持PROFILE
功能:
SHOW VARIABLES LIKE 'have_profiling';
或
SELECT @@have_profiling ;
若返回值为YES
,表示支持PROFILE
。
注:支持不一定开启了
- 检查是否开启:
SELECT @@profiling
若结果为0,表示没有开启,则需要进行设置开启
- 开启
PROFILE
SET profiling = 1; -- 开启Profiling
3.3 使用PROFILE
分析SQL
启用PROFILE
并执行分析的步骤如下:
-- 执行待分析的SQL语句
SELECT * FROM orders WHERE customer_id = 1;-- 查看profiling
SHOW PROFILES;-- 查看该语句执行过程的各个阶段时间开销
SHOW PROFILE FOR QUERY 1;
注:在
SHOW PROFILE FOR QUERY 1;
语句中,1
代表执行的第一个查询(按执行顺序排列)。
可以使用以下命令列出所有已执行的查询ID及其执行时间:SHOW PROFILES;
3.4 PROFILE
结果的解析
SHOW PROFILE
输出示例如下:
Status | Duration | |
---|---|---|
1 | starting | 0.0001 |
2 | checking permissions | 0.00002 |
3 | Opening tables | 0.00005 |
4 | init | 0.00003 |
5 | optimizing | 0.00003 |
6 | statistics | 0.00008 |
7 | preparing | 0.00004 |
8 | executing | 0.0015 |
9 | Sending data | 0.0025 |
10 | end | 0.0001 |
11 | query end | 0.00002 |
各阶段的时间开销有助于我们分析SQL的瓶颈。例如,如果Sending data
耗时较长,可能是由于查询结果数据量大、网络延迟等原因所致。
四、EXPLAIN
EXPLAIN
命令可以展示MySQL执行查询的计划,帮助分析查询性能和确定优化方向。
4.1 功能含义
EXPLAIN
提供了SQL查询的执行计划,展示了MySQL是如何处理查询的,包括使用的索引、扫描行数和连接类型等。通过EXPLAIN
结果,可以更好地了解查询的性能情况。
4.2 EXPLAIN
的语法
基本语法如下:
EXPLAIN SELECT * FROM orders WHERE customer_id = 1;
4.3 EXPLAIN
结果解析
EXPLAIN
结果的关键字段说明如下:
字段 | 含义 |
---|---|
id | 查询的执行顺序,id 值越大优先级越高,表示先执行。 |
select_type | 查询类型(如SIMPLE 表示简单查询,PRIMARY 表示主查询,SUBQUERY 表示子查询)。 |
table | 查询的表。 |
type | 连接类型,指明表的访问方式,如ALL (全表扫描)、index (索引扫描)、range (范围扫描)、ref (引用索引)。从性能级别来看:null > system > const > eq_ref > ref > range > index > all |
possible_keys | 查询中可能使用的索引。 |
key | 实际使用的索引。 |
key_len | 使用的索引长度,表示MySQL在查询中实际用到的字节数。 |
ref | 显示哪一列或常量与key 关联。 |
rows | MySQL估计查询过程中需要读取的行数。 |
Extra | 额外信息,显示MySQL在执行查询时的额外操作,如Using where 表示使用了WHERE 条件,Using index 表示使用覆盖索引。 |
注:对应type字段:从性能级别来看,null > system > const > eq_ref > ref > range > index > all
相关文章:

2.索引:SQL 性能分析详解
SQL性能分析是数据库优化中重要的一环。通过分析SQL的执行频率、慢查询日志、PROFILE工具以及EXPLAIN命令,能够帮助我们识别出数据库性能的瓶颈,并做出有效的优化措施。以下将详细讲解这几种常见的SQL性能分析工具和方法。 一、SQL 执行频率 SQL执行频率…...

Flink SQL
进入 JobManager 容器: docker exec -it 21442d9ca797 /bin/bash 启动 Flink 的 SQL 客户端: /opt/flink/bin/sql-client.sh embedded 尝试创建 Kafka 表: 在启动的 SQL 客户端中,尝试创建一个 Kafka 表,看看是否能…...

鸿蒙UI开发——实现环形文字
1、背 景 有朋友提问:您好关于鸿蒙UI想咨询一个问题 如果我想实现展示环形文字是需要通过在Text组件中设置transition来实现么,还是需要通过其他方式来实现。 针对这位粉丝朋友的提问,我们做一下解答。 2、实现环形文字效果 ❓ 什么是环形…...

QT版发送邮件程序
简单的TCP邮箱程序 **教学与实践目的:**学会网络邮件发送的程序设计技术。 1.SMTP协议 邮件传输协议包括 SMTP(简单邮件传输协议,RFC821)及其扩充协议 MIME; 邮件接收协议包括 POP3 和功能更强大的 IMAP 协议。 服务…...

JavaSE:初识Java(学习笔记)
java是高级语言的面向对象语言 .[最贴近生活.最快速分析和设计程序] 一,计算机语言发展历史 二,Java体系结构 1,JavaSE(Java Standard Edition) 标准版,定位在个人计算机上的应用 这个版本是Jav…...

ClickHouse创建分布式表
ClickHouse创建分布式表 当数据量剧增的时候,clickhouse是采用分片的方式进行数据的存储的,类似于redis集群的实现方式。然后想进行统一的查询的时候,因为涉及到多个本地表,可以通过分布式表的方式来提供统一的入口。由于是涉及到…...

Flink转换算子
Apache Flink 是一个用于处理无界和有界数据的开源流处理框架。在 Flink 中,转换(Transformation)是数据流处理的核心组件之一,它们定义了如何从输入数据集生成输出数据集。以下是 Flink 中一些常见的转换算子: Map: 将…...

ThinkBook 14+ 2024 Ubuntu 触控板失效 驱动缺失问题解决
首先我的电脑是thinkbook14 2024,从ubuntu18到ubuntu24,笔者整个都试了一遍,触摸板都没反应,确认不是linux系统内核问题,原因为驱动缺失。 解决步骤: (1)下载驱动,网址如…...

【青牛科技】应用方案 | D75xx-150mA三端稳压器
概 述 D75XX系列是一套三端高电流低压稳压器。它们可以提供 150mA 的输出电流和允许输入电压高达30V。它们有几个固定的输出电压范围为3.0 V至5.0 V。CMOS 技术确保低电压降和低静态电流。 虽然这些设备主要设计为固定电压调节器,但它们可以与外部元件一起使用&…...

WPF之iconfont(字体图标)使用
1,前文: WPF的Xaml是与前端的Html有着高度相似性的标记语言,所以Xaml也可同Html一般轻松使用阿里提供的海量字体图标,从而有效的减少开发工作度。 2,下载字体图标: 登录阿里图标库网iconfont-阿里巴巴矢量…...

08、Java学习-面向对象中级:
Java学习第十二天——面向对象中级: IDEA: 创建完新项目后,再src里面创建.java文件进行编写。 src——存放源码文件(.java文件);out——存放编译后的字节码文件(.class文件) 在I…...

springboot集成onlyoffice(部署+开发)
前言 最近有个项目需求是实现前端页面可以对word文档进行编辑,并且可以进行保存,于是一顿搜索,找到开源第三方onlyoffice,实际上onlyOffice有很多功能,例如文档转化、多人协同编辑文档、文档打印等,我们只用…...

LabVIEW编程基础教学(二)--数据类型
在LabVIEW中,数据类型是非常重要的基本概念,因为它们决定了如何存储和操作数据。掌握这些基础数据类型对于编写有效的程序非常关键。以下是LabVIEW中的基础数据类型介绍: 1. 数值类型(Numeric) 整型(Inte…...

「Mac畅玩鸿蒙与硬件29」UI互动应用篇6 - 多选问卷小应用
本篇将带你实现一个多选问卷小应用,用户可以勾选选项并点击提交按钮查看选择的结果。通过本教程,你将学习如何使用 Checkbox 组件、动态渲染列表、状态管理及用户交互,构建完整的应用程序。 关键词 UI互动应用Checkbox 组件状态管理动态列表…...

Flutter中文字体设置指南:打造个性化的应用体验
在使用Flutter进行开发时,可能会遇到中文字体显示不正常或者字体不符合设计需求的情况。Flutter默认的中文字体往往无法满足某些用户对个性化和美观的需求。今天,我们就来详细探讨如何在Flutter应用中设置中文字体,并结合不同场景提供相应的解…...

git下载慢下载不了?Git国内国外下载地址镜像,git安装视频教程
git安装下载的视频教程在这 3分钟完成git下载和安装,git国内外下载地址镜像,Windows为例_哔哩哔哩_bilibili 一、Git安装包国内和国外下载地址镜像 1.1国外官方下载地址 打开Git的官方网站:Git官网下载页面。在页面上选择对应的系统&…...

安卓属性动画插值器(Interpolator)详解
属性动画(Property Animation)是 Android 中一个强大的动画框架,允许开发者对视图的任意属性(如位置、透明度、尺寸、颜色等)进行平滑的动态变化。插值器(Interpolator)作为属性动画的一部分&am…...

OSPF总结
1.定义及相关信息 (1)全称:Open ShortestPath First,开放式最短路径优先 (2)是一种基于链路状态算法的路由协议 (3)目前针对IPv4协议使用的是OSPF Version2(RFC2328) 目前针对IPv6 协议使用的是 OSPF Version3 ( RFC2740 ) (4)运行 OSPF 路由器之间…...

Spring Boot驱动的多维分类知识管理系统
1 绪论 1.1 研究背景 在这个推荐个性化的时代,采用新技术开发一个多维分类的知识管理系统来分享和展示内容是一个永恒不变的需求。本次设计的多维分类的知识管理系统有管理员和用户两个角色。 管理员可以管理用户信息,知识分类,知识信息等&am…...

CSS教程(七)- 背景
介绍 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。 1 背景颜色 属性名:background-color 作用:指定HTML元素的背景色。 取值:英文颜色、16进制、rgb、rgba、transparent(一般为透明&#…...

PNG图片批量压缩exe工具+功能纯净+不改变原始尺寸
小编最近有一篇png图片要批量压缩,大小都在5MB之上,在网上找了半天要么就是有广告,要么就是有毒,要么就是功能复杂,整的我心烦意乱。 于是我自己用python写了一个纯净工具,只能压缩png图片,没任…...

【双十一特惠】腾讯云省钱攻略:如何智取云计算资源
前言 双十一不仅是购物的狂欢节,对于云计算用户来说,更是一个节省成本的绝佳时机。腾讯云,作为国内领先的云计算服务商,每年双十一都会推出一系列优惠活动。本文将为您揭开如何在这个购物节中,最大化利用腾讯云的优惠…...

爬虫学习8
Frida是一个动态代码插桩工具,允许开发者在运行时修改和调试应用程序 import ...:这行代码表示导入所需的模块或库,但具体的导入内容在图片中被省略了。 rdev frida.get_remote_device():这行代码获取一个远程设备实例ÿ…...

双指针算法的妙用:提高代码效率的秘密(2)
双指针算法的妙用:提高代码效率的秘密(2) 前言: 小编在前几日讲述了有关双指针算法两道题目的讲解,今天小编继续进行有关双指针算法习题的讲解,老规矩,今天还是两道题目的讲解,希望…...

笔记--(网络3)、交换机、VLAN
交换机 交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。 交换机的…...

昇思大模型平台打卡体验活动:基于MindSpore实现GPT1影评分类
如果你对MindSpore感兴趣,可以关注昇思MindSpore社区 大模型平台 平台说明 昇思大模型平台旨在为AI学习者和开发者提供在线学习的项目、模型、大模型体验和数据集的平台。我们也添加了各领域的经典数据集来帮助学习者解决AI学习过程中的一系列难题, 如…...

如何调整pdf的页面尺寸
用福昕阅读器打开pdf,进入打印页面,选择“属性”,在弹出的页面选择“高级” 选择你想调成的纸张尺寸,然后打印,打印出来的pdf就是调整尺寸后的pdf...

IDA*算法 Power Calculus————poj 3134
目录 闲聊 前言 DFS算法的无效搜索 BFS算法的空间浪费 IDDFS A*算法 IDA* Power Calculus 问题描述 输入 输出 问题分析 代码 闲聊 前几周在忙着数学竞赛,所以就没时间更新,高等数学,一生之敌,真不知道报名的时候我是怎么想…...

重磅!CoRL 2024顶刊会议 清华大学高阳研究组发布“基于大模型先验知识的强化学习”
正在德国举办的机器人研究领域的顶级学术会议CoRL 2024,清华大学交叉信息研究院高阳研究组发布重磅研究成果,提出“基于大模型先验知识的强化学习”框架(Reinforcement Learning with Foundation Priors) 来促进具身智能体在操作任务中的学习…...

泷羽sec学习打卡-Windows基础命令
声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于windows的那些事儿-Base 一、Windows-BaseWindows有哪些版本呢,有什么区别呢?…...