当前位置: 首页 > news >正文

SQL性能分析

查看执行频次

通过对数据库SQL的执行频次查看去判断数据库以什么操作为主, 从而进行对应的性能优化

MVSOL客户端连接成功后,通过 show sessiondlobalstatus命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的INSERT、UPUATE、DELETE、SELECT的访问频次:

SHOW GLOBAL STATUS LIKE 'Com_______';(下划线的个数就表示字符的个数, 一般为7个)

慢查询日志

慢查询日志记录了所有执行时间超过指定参数(long_querytime,单位:秒,默认10秒)的所有SOL语句的日志MySOL的慢查询日志默认没有开启,需要在MySOL的配置文件中配置如下信息:

#开启MySOL慢日志查询开关

slow query log=1
# 设置慢日志的时间为2秒,SOL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志Wlong query time=2

#判断慢查询日志是否开启

show variables like 'slow_query_log'

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

show profiles

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

SELECT @@have profiling ;

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

SET profiling=1;

 执行一系列的业务SOL的操作,然后通过如下指令查看指令的执行耗时:

#查看每一条SOL的耗时基本情况B
show profiles;
#查看指定query id的SOL语句各个阶段的耗时情况

show profile for query query id;
#查看指定query id的SOL语句CPU的使用情况
show profile cpu for query query id;

  • explain执行计划

XPLAIN 是 MySQL 提供的用于分析 SQL 查询执行计划的工具,通过该命令可以获取查询优化器选择的执行路径。

总结: explain可以查看sql执行时是否有使用到索引,关联查询时可以查看sql的执行顺序。

explain使用语法explain + sql语句 

+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table     | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | employees | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 3000 |    10.00 | Using where |
+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------------+

EXPLAIN执行计划各字段含义:

  • id

select查询的序列号, 表示查询中执行select子句或者是操作表的顺序(id相同,自上到下执行; 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.lryc.cn/news/590409.html

相关文章:

  • C# --- 单例类错误初始化 + 没有释放资源导致线程泄漏
  • 【Linux】如何使用nano创建并编辑一个文件
  • 动态规划题解_打家劫舍【LeetCode】
  • 编译原理第四到五章(知识点学习/期末复习/笔试/面试)
  • 部分排序算法的Java模拟实现(复习向,非0基础)
  • AWS ML Specialist 考试备考指南
  • 【Qt】麒麟系统安装套件
  • uniapp写好的弹窗组件
  • OWASP Top 10 攻击场景实战
  • 在 CentOS 8 上彻底卸载 Kubernetes(k8s)
  • 01 启动流程实例
  • ICMR-2025 | 杭电多智能体协作具身导航框架!MMCNav:基于MLLM的多智能体协作户外视觉语言导航
  • 钱包核心标准 BIP32、BIP39、BIP44:从助记词到多链钱包的底层逻辑
  • STM32F4踩坑小记——使用HAL库函数进入HardFault
  • 蓝光三维扫描技术:手机闪光灯模块全尺寸3D检测的高效解决方案
  • HTML基础知识 二(创建容器和表格)
  • 在虚拟环境中复现论文(环境配置)
  • Class<T> 类传递及泛型数组
  • SSH连接复用技术在海外云服务器环境下的稳定性验证与优化方案
  • 动态规划的核心性质——最优化原理 (Principle of Optimality)
  • git的diff命令、Config和.gitignore文件
  • Python编程基础(六)| 用户输入和while循环
  • slurm设置用户节点和分区权限
  • Telink的GPIO
  • 系统思考场景应用
  • Node.js基础用法
  • 3DGS之COLMAP
  • iOS 抓包工具选择与配置指南 从零基础到高效调试的完整流程
  • VR 污水厂初体验:颠覆传统认知​
  • CSS全面系统教程:从入门到精通网页样式设计