通常,当数据库长时间运行较慢时,罪魁祸首往往是“坏”查询。也就是说,查询未完全优化、编写不当或使用户能够从数据库中获取无限数量的行。我们可以通过在服务器上投入更多资源来减轻一些痛苦,但这实际上是一个短期解决方案,并没有解决根本问题。最好的行动方案是识别和修复问题查询,给予一些时间和精力,这应该不会太困难。 当然,第一步是确定哪个或哪些查询没有问题。有几种方法可以做到这一点,具体取决于你的特定数据库类型。今天的文章将重点介绍一些 MySQL 的策略。

使用 MySQL PROCESSLIST 表

PROCESSLIST 表是 INFORMATION_SCHEMA 数据库中的许多元数据表之一。顾名思义,它维护在数据库实例中运行的所有进程的信息。有多种方法可以访问它,如下几节所示。

使用 mysqladmin 命令行工具

mysqladmin 命令行工具随 MySQL 一起提供。使用标志“processlist”(或简称“proc”)运行它以查看当前正在运行的进程。此外,添加“statistics”标志(或简称“stat”)将显示自 MySQL 上次重启以来查询的运行统计信息

这是一些示例输出:

+-------+------+-----------+-----------+---------+------+-------+--------------------+----------+
| Id    | User | Host      | db        | Command | Time | State | Info               | Progress |
+-------+------+-----------+-----------+---------+------+-------+--------------------+----------+
| 77255 | root | localhost | employees | Query   | 150  |       | call While_Loop2() | 0.000    |
| 77285 | root | localhost |           | Query   | 0    | init  | show processlist   | 0.000    |
+-------+------+-----------+-----------+---------+------+-------+--------------------+----------+
Uptime: 781398  Threads: 2  Questions: 18761833  Slow queries: 0  Opens: 2976  Flush tables: 1  Open tables: 101  Queries per second avg: 26.543

由于此命令在 shell 界面上运行,因此你可以将输出通过管道传输到其他脚本和工具。缺点是 PROCESSLIST 表的信息列总是被截断,因此它不提供较长查询的完整查询。

查询 MySQL PROCESSLIST 表

查询 PROCESSLIST 表的方法是从 MySQL 的交互模式提示中运行“show processlist;”查询。Navicat 用户可以像执行任何查询一样直接在 SQL 编辑器中执行 show processlist 查询:

请注意,有时需要在命令中添加“full”修饰符以禁用信息列的截断。(查看长查询时,这是必要的。)

使用监控工具

为了更深入地分析查询性能,许多专业数据库管理员(DBA)使用数据库监控器,例如 Navicat Monitor 。它有一个查询分析器,可以实时监控查询,以快速提高服务器的性能和效率。它显示所有正在执行的查询的摘要信息,让你轻松发现有问题的查询。如下图所示,Navicat Monitor 可以按执行时间对查询进行排序,以便可以一目了然地找到最慢的查询:

总结

在这篇文章中,我们学习了一些使用 MySQL PROCESSLIST 表和 Navicat Monitor 识别慢速查询的简单方法。点击此处了解有关 Navicat Monitor 的所有功能的更多详细信息,或下载 14 天全功能免费试用版!

往期回顾

Navicat 被投毒了 | 真相来了!

盗版引发设备瘫痪

Navicat 16.1 为OceanBase 社区版

Navicat 成为信通院数据库创新实验室成员

Navicat 学术伙伴计划 - 免费教育版申请

Navicat 技术智库 - 实战演练与各类热门问题解答

免费试用攻略 | Navciat 16 数据库管理工具

实战演练 | MySQL PROCESSLIST 表和 Navicat Monitor 识别慢速查询的简单方法相关推荐

  1. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...

    本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...

  2. mysql like带字符串_(转)MySQL数据表中带LIKE的字符匹配查询

    MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的字符串相匹配,则符合查询条件,该记录将被查询出来. 如果与指定的字符串不匹配,则不符合查询条件. ...

  3. mysql binlo 抽取_使用mysqlbinlog根据时间点提取SQL简单方法

    使用mysqlbinlog根据时间点提取SQL简单方法 发布时间:2020-05-12 11:24:37 来源:亿速云 阅读:244 作者:三月 本文主要给大家介绍使用mysqlbinlog根据时间点 ...

  4. 使用solr的DIHandler 构建mysql大表全量索引,内存溢出问题的解决方法

    solr官方给出的解决方式是: DataImportHandler is designed to stream row one-by-one. It passes a fetch size value ...

  5. 【mysql】表名或字段名与关键字重名解决方法

    如果在一个sql业务中,你见到如下字段: date,for,check,while,end,long等作为了表名或者字段名,那么sql执行肯定会有异常信息! 代码: SELECT for,long F ...

  6. mysql多表关联left join_Mysql多表表关联查询 inner Join left join right join

    一.Join语法概述 join 用于多表中字段之间的联系,语法如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1: ...

  7. 表中的数据导出为insert语句的简单方法

    因项目需要,有时要求将一个表中的记录导出来,结合网上搜索的一些代码,而成此文 .因时间过长已找不出原创作者,谨请原谅 Create procedure pGetInsertSQL (@tablenam ...

  8. java获取插入数据库表中的自增列值的一个简单方法

    PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); // 第一步 ps.execute ...

  9. Django下载文件中文乱码 FileResponse 浏览器正确识别文件名和文件大小的简单方法

    起因 工作需要维护一个工单系统,下载文件时如果文件名有中文会导致乱码,并且下载时不显示文件的完整大小,没有进度条 修改 原先接口是这样写的 # view入口 class DownFile(BaseVi ...

最新文章

  1. poladuo network 轻松解决Windows系统棘手问题
  2. 一. synchronized 的局限性 与 Lock 的优点
  3. 结构化异常捕获空指针异常
  4. IP-guard应用攻略:如何防范外置网卡泄密
  5. 什么是元宇宙、新基建、赛博空间?7个最火科技名词解释,都在这里了
  6. easyplayerpro 使用说明_EasyPlayerPro(Windows)流媒体播放器开发之ffmpeg log输出报错
  7. spring 标注 详解
  8. 1.12 Linux查看用户信息
  9. rust投递箱连接箱子_海门市围板箱定制围板箱内衬
  10. 平面设计中的网格系统pdf_一本好书 | 排版圣经:设计中的网格系统
  11. 基于multisim14的函数信号发生器仿真
  12. Python常用模块 之 datetime模块——处理时间和日期
  13. 5分钟快速入门大数据、数据挖掘、机器学习
  14. cataclysm【题解】【考试】
  15. Redis RDB和AOF
  16. Python运行不显示DOS窗口方法
  17. 2021-06-07 QQ注册
  18. 物流快递信息查询管理系统网站(JSP+HTML+MySQL)
  19. 研究目标与研究内容的撰写
  20. S7-1500 PLC编程

热门文章

  1. (最小生成树)Codeforces Educational Codeforces Round 9 Magic Matrix
  2. php雅思老师,雅思口语话题:最喜欢的老师
  3. 使用oc的block方法回调
  4. 电梯门禁系统服务器一般在哪,电梯控制系统与门禁系统的区别
  5. android 广告库sdk,GitHub - adxdata/sdk-android-demo: 美数广告SDK(Android)示例
  6. 接口自动化-接口请求数据准备-如何生成随机姓名、年龄、号码、email等
  7. 脑动力PHP函数速查效率手册pdf
  8. 简单的交换排序法(选择排序)。
  9. vscode设置C++代码格式化(Clang-Format)
  10. 解决实例化servlet报错500