MySQL SQL性能分析(SQL优化 一)

news2024/11/25 2:31:12

在开发和维护数据库应用程序时,优化SQL查询的性能是至关重要的。MySQL提供了一些强大的工具和技术,帮助我们进行SQL性能分析,找出潜在的瓶颈并进行相应的优化。

查看SQL的执行频率

show [ session| global ] status 命令查看服务器状态信息,可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次

-- session 是查看当前会话的select(当前数据库,关闭数据库重置) ;
show session status like 'com_select';
-- 查询全部
show session status like  'com_______';
-- global 是查询全局数据(整个连接的所有数据库) ;
show global status like  'com_______';

慢查询日志(Slow Query Log)

MySQL的慢查询日志是一种记录执行时间超过阈值(默认10s)的SQL语句的日志,通过启用慢查询日志,我们可以收集执行时间较长的SQL语句,进而分析和优化这些查询。

-- 通过命令 - 查看慢查询日志状态(默认是开启的)
show variables like 'slow_query_log';
-- 时间参数
show variables like 'long_query_time';

-- 也可以修改

-- 关闭和开启
-- set global slow_query_log = 'off';
set global slow_query_log = 'on';

-- 设置时间阈值,SQL语句执行时间超过10秒,就会视为慢查询,记录慢查询日志
set session long_query_time =10;

命令修改只是对当前回话状态有效,当关闭数据库后,会重置,如果想全局服务器有效,就修改配置文件(Windows是my.ini,一般在MySQL数据安装目录下。Linux是my.cnf ,该文件通常位于 /etc 目录下,或者MySQL安装目录下)。

找到该位置的配置就能修改慢查询日志状态了,1:开启,0:关闭,时间参数是10s

然后执行查询语句,对数量有一定要求(可能10w+数据到达1秒),才能到达慢查询时间阈值。

通过慢查询日志,就可以定位出执行效率比较低的SQL,从而有针对性的进行优化。

explain命令

explain命令是MySQL提供的一个强大的工具,用于分析查询语句的执行计划,通过执行explain命令,我们可以获取查询语句的执行计划、访问的索引、表之间的连接方式等重要信息。这些信息可以帮助我们理解查询的执行过程,找出可能存在的性能问题,并做出相应的优化。

-- 直接在select语句之前加上关键字 explain / desc

explain select 列名 from 表名 where 条件;

-- 
explain select name from employees where name='张三' ;

查询性能分析器(Query Profiler)

MySQL提供了一个查询性能分析器,可以帮助我们深入了解查询语句的执行情况。通过查询性能分析器,我们可以获取查询语句的执行时间、扫描的行数、使用的索引等详细信息。这些信息可以帮助我们找出查询中的瓶颈,并针对性地进行性能优化。

-- 查询profiling状态
SELECT  @@profiling ;


-- 开启或关闭
SET profiling = 1;
SET profiling = 0;

-- 查询SQL耗时
show profiles

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

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

数据库优化工具

除了MySQL自带的工具外,还有一些第三方的数据库优化工具可以帮助我们进行SQL性能分析。比如,Percona Toolkit(开源工具集)、Enterprise Monitor(是商用的)。

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

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

相关文章

web:[RoarCTF 2019]Easy Calc

题目 进入页面是一个计算器的页面 随便试了一下 查看源代码看看有什么有用的信息 访问一下这个calc.php 进行代码审计 <?php error_reporting(0); if(!isset($_GET[num])){show_source(__FILE__); }else{$str $_GET[num];$blacklist [ , \t, \r, \n,\, ", , \[, \]…

Python语言:函数的使用

按我的理解&#xff0c;编程世界中的函数就是一个模块&#xff1a;提前写好一个特动功能&#xff0c;方便以后直接调用且实现其功能&#xff0c;可以大大提高工作效率。 今天我们通过一个python语言的函数使用小案例来进一步加深对函数的理解。案例名字为S的银行之行。S是一个吝…

1.6.C++项目:仿muduo库实现并发服务器之channel模块的设计

项目完整版在&#xff1a; 文章目录 一、channel模块&#xff1a;事件管理Channel类实现二、提供的功能三、实现思想&#xff08;一&#xff09;功能&#xff08;二&#xff09;意义&#xff08;三&#xff09;功能设计 四、代码&#xff08;一&#xff09;框架&#xff08;二…

Mac卸载不了软件怎么办?2023年最新MacBook卸载大集合

很多朋友在卸载软件的时候&#xff0c;可能会遇到卸载不了的情况。软件正在使用、软件来自第三方等原因都可能导致我们无法将其成功卸载。本篇文章就将告诉您“Mac卸载不了软件”的解决办法。 为什么Mac卸载不了软件&#xff1f; Mac卸载不了软件的原因很多&#xff0c;常见的…

Excel如何快速将表格纵向数据变成横向

第一&#xff0c;打开Excel文件&#xff0c;我们看到表格里面的内容为纵向排列&#xff1b; 第二&#xff0c;要将表格纵向排列变成横向&#xff0c;首先选中单元格内容&#xff0c;按CTRLC快速复制。 第三&#xff0c;选中一个空白单元格&#xff0c;点击鼠标右键&#xff0c;…

SentenceTransformer 之论文解读

摘要 原文标题&#xff1a;Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks 链接&#xff1a;https://arxiv.org/pdf/1908.10084.pdf 尽管Bert和RoBERTa在句子对回归任务上&#xff0c;例如语义文本相似度&#xff08;Semantic Text Similarity&#xff09;…

300元以内最好的开放式耳机是哪款、百元开放式耳机推荐

如果你是一位运动用户&#xff0c;或者耳道比较敏感的用户&#xff0c;耳机一定要选开放式的。开放式耳机的优点是在听歌的能够兼顾环境音&#xff0c;避免户外运动时出现的安全问题。在耳机的佩戴上舒适性上也比入耳式耳机好&#xff0c;不会对耳朵造成压迫导致不适。不足是音…

高效记录,事项井然——OmniOutliner 5 Pro for Mac 信息大纲记录工具

OmniOutliner 5 Pro for Mac 是一款强大的信息大纲记录工具&#xff0c;帮助您高效组织和管理各种信息。无论是个人笔记、工作计划、项目管理还是学习资料&#xff0c;这款应用都能满足您的需求&#xff0c;并使您的日常工作更加井然有序。 OmniOutliner 5 Pro 提供了一套丰富…

为何每个开发者都在谈论Go?

目录 一、引言Go的历史回顾关键时间节点 使用场景Go的语言地位技术社群与企业支持资源投入和生态系统 二、简洁的语法结构基本组成元素变量声明与初始化代码示例 类型推断函数与返回值代码示例输出 接口与结构体&#xff1a;组合而非继承错误处理&#xff1a;明确而不是异常小结…

什么是数据库锁(Lock)?有哪些类型的锁

数据库锁&#xff08;Lock&#xff09;&#xff1a;保护数据完整性与并发性的关键 数据库锁&#xff08;Lock&#xff09;是在数据库管理系统中用于管理并发访问数据的重要机制。它们确保了多个用户或事务可以同时访问数据库&#xff0c;同时保护数据的完整性。在本文中&#…

JJJ:添加开机自启动项

比如我希望一个截图软件能开机自启动&#xff1a; 1、打开任务管理器&#xff1a; 进入启动栏&#xff1a; 发现没有snipaste可以设置 2、win r&#xff0c; 输入 shell:startup 然后回弹出一个新的窗口&#xff0c;把截图软件的快捷方式放里头 这样snipaste就能开机自启动…

Python报错:KeyError: ‘820‘

Python报错&#xff1a;KeyError: ‘820’ 问题描述 原因 操作的表格列名是数字 NIRdata[820] Rdata[630]以上是出错行&#xff0c;dataframe的这种索引方式不支持用数字。 解决方案 先修改列名为字符 然后将出错行改为对应列名 NIRdata[nir] Rdata[r]

QSS之QLineEdit

QLineEdit我们在开发过程中是经常使用的&#xff0c;一般情况下默认的风格是不适合设计师的要求&#xff0c;本篇介绍QLineEdit的基本qss风格&#xff1a; 1.基本属性设置 QLineEdit{background-color:#FFFFFF;color:#333333;border:none;} 2.悬浮状态设置 QLineEdit:hover…

亲和力的作用,以及提高亲和力的六个办法

亲和力指的是容易使人亲近&#xff0c;当人身处集体中&#xff0c;亲和力也即是影响力和凝聚力的体现。通常是在职场中会明确对亲和力的考评&#xff0c;尤其是某些管理型岗位&#xff0c;所以HR人力资源管理中对亲和力有详细的评级标准。不过这里小猫测试网不详细讨论亲和力的…

【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.3p2(亲测无问题,建议收藏)

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

[Java·算法·困难]LeetCode124.二叉树中的最大路径和

每天一题&#xff0c;防止痴呆 题目示例分析思路1题解1 &#x1f449;️ 力扣原文 题目 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经…

第七章 查找 七、红黑树

一、为什么要发明红黑树 因为&#xff1a; 平衡二叉树AVL:插入/删除很容易破坏“平衡”特性&#xff0c;需要频繁调整树的形态。如:插入操作导致不平衡&#xff0c;则需要先计算平衡因子&#xff0c;找到最小不平衡子树&#xff08;时间开销大&#xff09;&#xff0c;再进行L…

Ubuntu配置深度学习环境(TensorFlow和pyTorch)

文章目录 一、CUDA安装1.1 安装显卡驱动1.2 CUDA安装1.3 安装cuDNN 二、Anaconda安装三、安装TensorFlow和pyTorch3.1 安装pyTorch3.2 安装TensorFlow2 四、安装pyCharm4.1 pyCharm的安装4.2 关联anaconda的Python解释器 五、VScode配置anaconda的Python虚拟环境 前言&#xff…

使用sqlmap的 ua注入

文章目录 1.使用sqlmap自带UA头的检测2.使用sqlmap随机提供的UA头3.使用自己写的UA头4.调整level检测 测试环境&#xff1a;bWAPP SQL Injection - Stored (User-Agent) 1.使用sqlmap自带UA头的检测 python sqlmap.py -u http://127.0.0.1:9004/sqli_17.php --cookie“BEEFHOO…

C语言 —— 函数

目录 1. 函数是什么 2. C语言中函数的分类 2.1 库函数 2.2 自定义函数 3. 函数的参数 3.1 实际参数(实参) 3.2 形式参数(形参) 4. 函数的调用 4.1 传值调用 4.2 传址调用 5. 函数的嵌套调用和链式访问 5.1 嵌套调用 5.2 链式访问 6. 函数的声明和定义 6.1函数声明…