MySQL SQL性能分析(SQL优化 一)
作者:小教学发布时间:2023-10-01分类:程序开发学习浏览:97
在开发和维护数据库应用程序时,优化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(是商用的)。
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 8鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 9Android广播如何解决Sending non-protected broadcast问题
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版