SQL性能分析

SQL性能分析

1、SQL执行频率

​ MySQL 客户端连接成功后,通过 show [session|global] status 命令可以提供服务器状态信

息。通过如下指令,可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次:

-- session 是查看当前会话 ;
-- global 是查询全局数据 ;
SHOW GLOBAL STATUS LIKE 'Com_______';

Com_delete: 删除次数

Com_insert: 插入次数

Com_select: 查询次数

Com_update: 更新次数

​ 通过上述指令,我们可以查看到当前数据库到底是以查询为主,还是以增删改为主,从而为数据

库优化提供参考依据。 如果是以增删改为主,我们可以考虑不对其进行索引的优化。 如果是以

查询为主,那么就要考虑对数据库的索引进行优化了。

​ 那么通过查询SQL的执行频次,我们就能够知道当前数据库到底是增删改为主,还是查询为主。 那假

如说是以查询为主,我们又该如何定位针对于那些查询语句进行优化呢? 次数我们可以借助于慢查询

日志。

2、MySQL中的慢查询日志

​ 慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志。通过慢查询日志,就可以定位出执行效率比较低的SQL,从而有针对性的进行优化。

​ MySQL的慢查询日志默认没有开启,我们可以查看一下系统变量 slow_query_log

​ 如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:

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

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

在慢查询日志中,只会记录执行时间超多我们预设时间(2s)的SQL,执行较快的SQL是不会记录的。

3、profile详情

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

select @@have_profiling ;

可以通过set语句在session/global级别开启profiling:

set profiling = 1;

通过以下指令查看执行耗时:

-- 查看每一条SQL的耗时基本情况
show profiles;
-- 查看指定query_id的SQL语句各个阶段的耗时情况
show profile for query query_id;
-- 查看指定query_id的SQL语句CPU的使用情况
show profile cpu for query query_id;

在这里插入图片描述

4、explain执行计划

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

语法:

-- 直接在select语句之前加上关键字 explain / desc
EXPLAIN SELECT 字段列表 FROM 表名 WHERE 条件 ;

在这里插入图片描述

Explain 执行计划中各个字段的含义:

  • id:select查询的序列号,表示查询中执行select子句或者是操作表的顺序(id相同,执行顺序从上到下;id不同,值越大,越先执行)。

  • select_type:表示 SELECT 的类型,常见的取值有 SIMPLE(简单表,即不使用表连接或者子查询)、PRIMARY(主查询,即外层的查询)、UNION(UNION 中的第二个或者后面的查询语句)、SUBQUERY(SELECT/WHERE之后包含了子查询)等

  • type:表示连接类型,性能由好到差的连接类型为NULL、system、const、eq_ref、ref、range、 index、all 。

  • possible_key:显示可能应用在这张表上的索引,一个或多个。

  • key:实际使用的索引,如果为NULL,则没有使用索引。

  • key_len:表示索引中使用的字节数, 该值为索引字段最大可能长度,并非实际使用长度,在不损失精确性的前提下, 长度越短越好 。

  • rows:MySQL认为必须要执行查询的行数,在innodb引擎的表中,是一个估计值,可能并不总是准确的。

  • filtered:表示返回结果的行数占需读取行数的百分比, filtered 的值越大越好。

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

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

相关文章

Python源码23:海龟画图turtle画小狗狗

---------------turtle源码集合--------------- Python教程43:海龟画图turtle画小樱魔法阵 Python教程42:海龟画图turtle画海绵宝宝 Python教程41:海龟画图turtle画蜡笔小新 Python教程40:使用turtle画一只杰瑞 Python教程39…

2024年第十届控制、自动化与机器人国际会议(ICCAR 2024)即将召开!

2024年4月27~29日 新加披 会议官网:10th-ICCAR 2024https://iccar.org/index.html 第十届控制、自动化和机器人国际会议将于2024年4月27-29日在新加坡举办。本次会议由新加坡电子学会,IEEE机器人和自动控制协会和IEEE联合主办,并得到北京航空…

day2·算法-快乐数-有效三角形个数

今天又来更新啦,准备蓝桥杯的小伙伴可以和我一起来刷题,建议大家先看题,整理出思路,再看如何用简单的写法将思路构建出来,然后优化细节,找到解决某些例外出现的方法,从而成功解答这道题。 快乐…

群发邮件的免费软件?做外贸用什么邮箱好?

群发邮件的免费软件有哪些?好用的邮件群发软件? 在数字时代,邮件已成为人们沟通的主要方式之一。有时候,我们需要给大量的联系人发送信息,这时候,群发邮件就显得格外重要。接下来蜂邮就来探讨一下那些值得…

SuperMap iDesktopX 11i(2023) 新特性之按过滤条件删除对象

作者:bsy 文章目录 前言功能入口:参数说明:结果展示: 前言 当对一个大数据量的数据集删除多个数据时,旧版本的 iDesktopX 可以从地图中选择要素删除,也可以从属性表中选中一行进行删除,但是操作…

Transformer简单理解

目录 一、CNN存在的问题:二.Transformer整理架构分析:1.Linear Projection of Flattened Patches层形成Patch:2.对每个Patch进行位置编码Position Embedding:3.Transformer Encoder: 三.公式解读: 一、CNN存在的问题&a…

Ansys Zemax | 如何使用光学制造全息图修正像差

附件下载 联系工作人员获取附件 本文介绍了利用光学全息图降低单透镜像差的方法。在描述了表示全息图构造光束的两个 ZMX 文件之后,本文演示了如何在重现文件中设置 OFH。然后解释了如何轻松地从重现文件中访问任何结构造光束变量,以实现衍射受限单透镜…

数据结构学习 jz45 把数组排成最小的数

关键词:贪心 排序 快速排序 题目:破解闯关密码 思路: 快排自己制定快排规则 开辟一个vector存string,自己制定排序规则,然后用快排比较string大小。 排序规则: sort(strs.begin(),strs.end(),[](string…

建造者模式深入理解:演示建造单个和多个产品的实践,结合模板模式,通俗易懂

首先呢看下建造者的定义是什么样的,先读一遍 建造者模式 建造者模式(Builder Pattern)是一种创建型设计模式,它主要用于将一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表现形式。这种模式…

编程笔记 html5cssjs 040 CSS盒子模型

编程笔记 html5&css&js 040 CSS盒子模型 一、CSS 盒子模型二、元素的宽度和高度三、最终元素的总宽度四、元素的总高度五、练习小结 网页是靠分成不同的块,再赋予这些块各不相同的属性来布局的。所以这个“块”是一个基础。先看块本身的构造。 一、CSS 盒子…

深度学习笔记(四)——使用TF2构建基础网络的常用函数+简单ML分类实现

文中程序以Tensorflow-2.6.0为例 部分概念包含笔者个人理解,如有遗漏或错误,欢迎评论或私信指正。 截图和程序部分引用自北京大学机器学习公开课 TF2基础常用函数 1、张量处理类 强制数据类型转换: a1 tf.constant([1,2,3], dtypetf.floa…

网络传输文件软件哪个好?企业该如何选择?

随着互联网技术的飞速发展,网络传输文件软件已经成为企业日常工作中不可或缺的一部分。然而,在市场上众多的网络传输文件软件中,很多企业对于如何选择合适的方案感到困惑。那么,究竟什么是网络传输文件软件?它有哪些作…

怎么注册微商城?开启微商城之旅

在这个数字化时代,微商城的出现为商家提供了一个全新的机会,商家企业可以通过微商城来展示和销售自己的产品。而对于一些商家而言,不知道怎么注册微商城。下面给大家做一个简单的分享。 第一步:选择合适的微商城搭建工具 在注册…

计算机毕业设计 | SpringBoot宠物店管理系统(附源码)

1,绪论 项目背景 我国已经成为世界第二大经济体,经济实力高速发展以及百姓生活水平的普遍提高,不断地要求企业提供更加多元化的娱乐方式,更加快速和方便的服务,因此对宠物行业也提出了更加严格的要求,如管…

洛谷 P1523 旅行商简化版【线性dp+npc问题简化版】

原题链接:https://www.luogu.com.cn/problem/P1523 题目背景 欧几里德旅行商(Euclidean Traveling Salesman)问题也就是货郎担问题一直是困扰全世界数学家、计算机学家的著名问题。现有的算法都没有办法在确定型机器上在多项式时间内求出最优解,但是有…

二叉树(完全二叉树,满二叉树,二叉树的特性,遍历方式,根据遍历方式画出完整的二叉树图相关例题)

目录 基本概念 一、二叉树(满二叉树,完全二叉树) 二、二叉树的特性 1、若规定根节点的层数为1,则一棵非空二叉树的第i层最多有2^(i-1) 个节点(i>0) 2、若规定只有根节点的二叉树的深度为1&#xff0…

人力资源智能化管理项目(day01:基础架构拆解)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈 一、基础架构拆解 1.拉取模板代码 git clone GitHub - PanJiaChen/vue-admin-template: a vue2.0 minimal admin template 项目名 2.core-js…

使用WAF防御网络上的隐蔽威胁之SQL注入攻击

SQL注入攻击是一种普遍存在且危害巨大的网络安全威胁,它允许攻击者通过执行恶意的SQL语句来操纵或破坏数据库。 这种攻击不仅能够读取敏感数据,还可能用于添加、修改或删除数据库中的记录。因此,了解SQL注入攻击的机制及其防御策略对于保护网…

6.3.1认识Camtasia4(1)

6.3.1认识Camtasia4 安装完Camtasia4(本书使用Camtasia4.0.1版本)后,单击【开始】|【程序】|【Camtasia Studio 4】|【Camtasia Studio】,启动Camtasia Studio,启动后界面如图6-3-1所示。 图6-3-1 Camtasia Studio界面 Camtasia Studio窗口中…

打印的前后顺序

面试题经常会有 <script>console.log(1)setTimeout(function(){console.log(2)})console.log(3)let pnew Promise((resolve,reject) >{console.log(4)resloved(hhhhhh)})p.then(res >{console.log(res)console.log(5)},res >{console.log(7)})console.log(6)&l…