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

mysql 分析慢查询

要分析 MySQL 中的慢查询,可以使用以下方法和工具:

  1. 启用慢查询日志:

    • 步骤:
      1. 打开 MySQL 配置文件(my.cnf 或 my.ini)。
      2. 添加或修改以下参数:
        slow_query_log = 1
        slow_query_log_file = /path/to/your/mysql-slow.log
        long_query_time = 2
        

        这里的 long_query_time 设置为 2 秒,即查询超过 2 秒的将被记录到慢查询日志中。 3. 重启 MySQL 服务以应用配置。 4. 确认设置生效:

        SHOW VARIABLES LIKE 'slow_query_log';
        SHOW VARIABLES LIKE 'slow_query_log_file';
        SHOW VARIABLES LIKE 'long_query_time';
        

   2.分析慢查询日志:

  • 使用 mysqldumpslowmysqldumpslow 是一个用于分析慢查询日志的命令行工具。
    • 基本用法:
mysqldumpslow -s t /path/to/your/mysql-slow.log
  • 这里的 -s t 表示按时间排序。
  • 常用选项:
    • -s : 排序方式(c - 计数, l - 锁时间, r - 返回记录, t - 查询时间, al - 平均锁时间, ar - 平均返回记录, at - 平均查询时间)
    • -t : 返回前 N 条查询
    • -g : 使用正则表达式匹配特定查询

   3.使用 EXPLAIN 分析查询:

  • EXPLAIN 可以显示查询的执行计划,帮助了解查询执行的具体步骤。
  • 使用方法:
EXPLAIN SELECT * FROM your_table WHERE your_conditions;
  • 输出解释:
    • id:查询中select的序列号。
    • select_type:查询的类型(SIMPLE、PRIMARY、UNION、SUBQUERY等)。
    • table:表名。
    • type:连接类型(ALL、index、range、ref、eq_ref、const、system、NULL)。
    • possible_keys:查询中可能使用的索引。
    • key:实际使用的索引。
    • key_len:使用的索引长度。
    • ref:索引的列。
    • rows:预计读取的行数。
    • Extra:额外信息(如Using index, Using where, Using temporary, Using filesort)。

 4.使用性能模式(Performance Schema):

  • MySQL 的性能模式是一个用于监控服务器性能的工具。
  • 启用和配置性能模式:
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME = 'events_statements_history';
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME = 'events_statements_current';

 查询慢查询信息:

SELECT * FROM performance_schema.events_statements_history WHERE TIMER_WAIT > 2000000000;  -- 2秒

  5.使用第三方工具:

  • pt-query-digestpt-query-digest 是 Percona Toolkit 中的一个工具,用于分析慢查询日志和其他日志文件。
    • 使用方法,它会生成详细的分析报告,包含最慢的查询、频率、时间分布等信息。
      pt-query-digest /path/to/your/mysql-slow.log
      

 ​​​​​MySQL Workbench: MySQL Workbench 提供了一个图形界面工具,可以分析慢查询日志并生成报告。

通过上述方法,可以有效分析和优化 MySQL 的慢查询,找到性能瓶颈并进行针对性的优化。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Opencv学习-图像翻转变换
  • SSM学生选课系统-计算机毕业设计源码99890
  • 中文网址导航模版HaoWa1.3.1/模版网站wordpress导航主题
  • <Qt> 常用控件
  • 使用labelme生成mask数据集(亲测可行)
  • 《学会 SpringMVC 系列 · 写入拦截器 ResponseBodyAdvice》
  • 《LeetCode热题100》---<5.③普通数组篇五道>
  • cf935:D.Seraphim the Owl(贪心)
  • c++入门基础(下篇)————引用、inline、nullptr
  • 爬虫:xpath模块及昵图网实例
  • 宏编程:C++宏、Rust宏和Lisp宏比较
  • [GWCTF 2019]我有一个数据库1
  • 24年电赛——自动行驶小车(H题)MSPM0G3507-编码电机驱动与通用PID
  • unity 小怪播放动画导致ui抖动
  • C-V2X通信协议
  • [译] 怎样写一个基础的编译器
  • Android组件 - 收藏集 - 掘金
  • CentOS 7 防火墙操作
  • CSS 三角实现
  • ES6--对象的扩展
  • Git同步原始仓库到Fork仓库中
  • HTTP中GET与POST的区别 99%的错误认识
  • Java比较器对数组,集合排序
  • Mac转Windows的拯救指南
  • php面试题 汇集2
  • Python 基础起步 (十) 什么叫函数?
  • QQ浏览器x5内核的兼容性问题
  • uni-app项目数字滚动
  • vue-router 实现分析
  • 翻译--Thinking in React
  • 无服务器化是企业 IT 架构的未来吗?
  • 写代码的正确姿势
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​字​节​一​面​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (02)Hive SQL编译成MapReduce任务的过程
  • (1)svelte 教程:hello world
  • (2)空速传感器
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (四)模仿学习-完成后台管理页面查询
  • (算法)大数的进制转换
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (循环依赖问题)学习spring的第九天
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .Net Redis的秒杀Dome和异步执行
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .Net7 环境安装配置
  • .Net8 Blazor 尝鲜
  • .NET命名规范和开发约定