实战演练 | MySQL PROCESSLIST 表和 Navicat Monitor 识别慢速查询的简单方法
通常,当数据库长时间运行较慢时,罪魁祸首往往是“坏”查询。也就是说,查询未完全优化、编写不当或使用户能够从数据库中获取无限数量的行。我们可以通过在服务器上投入更多资源来减轻一些痛苦,但这实际上是一个短期解决方案,并没有解决根本问题。最好的行动方案是识别和修复问题查询,给予一些时间和精力,这应该不会太困难。 当然,第一步是确定哪个或哪些查询没有问题。有几种方法可以做到这一点,具体取决于你的特定数据库类型。今天的文章将重点介绍一些 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 识别慢速查询的简单方法相关推荐
- python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...
本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...
- mysql like带字符串_(转)MySQL数据表中带LIKE的字符匹配查询
MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的字符串相匹配,则符合查询条件,该记录将被查询出来. 如果与指定的字符串不匹配,则不符合查询条件. ...
- mysql binlo 抽取_使用mysqlbinlog根据时间点提取SQL简单方法
使用mysqlbinlog根据时间点提取SQL简单方法 发布时间:2020-05-12 11:24:37 来源:亿速云 阅读:244 作者:三月 本文主要给大家介绍使用mysqlbinlog根据时间点 ...
- 使用solr的DIHandler 构建mysql大表全量索引,内存溢出问题的解决方法
solr官方给出的解决方式是: DataImportHandler is designed to stream row one-by-one. It passes a fetch size value ...
- 【mysql】表名或字段名与关键字重名解决方法
如果在一个sql业务中,你见到如下字段: date,for,check,while,end,long等作为了表名或者字段名,那么sql执行肯定会有异常信息! 代码: SELECT for,long F ...
- mysql多表关联left join_Mysql多表表关联查询 inner Join left join right join
一.Join语法概述 join 用于多表中字段之间的联系,语法如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1: ...
- 表中的数据导出为insert语句的简单方法
因项目需要,有时要求将一个表中的记录导出来,结合网上搜索的一些代码,而成此文 .因时间过长已找不出原创作者,谨请原谅 Create procedure pGetInsertSQL (@tablenam ...
- java获取插入数据库表中的自增列值的一个简单方法
PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); // 第一步 ps.execute ...
- Django下载文件中文乱码 FileResponse 浏览器正确识别文件名和文件大小的简单方法
起因 工作需要维护一个工单系统,下载文件时如果文件名有中文会导致乱码,并且下载时不显示文件的完整大小,没有进度条 修改 原先接口是这样写的 # view入口 class DownFile(BaseVi ...
最新文章
- poladuo network 轻松解决Windows系统棘手问题
- 一. synchronized 的局限性 与 Lock 的优点
- 结构化异常捕获空指针异常
- IP-guard应用攻略:如何防范外置网卡泄密
- 什么是元宇宙、新基建、赛博空间?7个最火科技名词解释,都在这里了
- easyplayerpro 使用说明_EasyPlayerPro(Windows)流媒体播放器开发之ffmpeg log输出报错
- spring 标注 详解
- 1.12 Linux查看用户信息
- rust投递箱连接箱子_海门市围板箱定制围板箱内衬
- 平面设计中的网格系统pdf_一本好书 | 排版圣经:设计中的网格系统
- 基于multisim14的函数信号发生器仿真
- Python常用模块 之 datetime模块——处理时间和日期
- 5分钟快速入门大数据、数据挖掘、机器学习
- cataclysm【题解】【考试】
- Redis RDB和AOF
- Python运行不显示DOS窗口方法
- 2021-06-07 QQ注册
- 物流快递信息查询管理系统网站(JSP+HTML+MySQL)
- 研究目标与研究内容的撰写
- S7-1500 PLC编程
热门文章
- (最小生成树)Codeforces Educational Codeforces Round 9 Magic Matrix
- php雅思老师,雅思口语话题:最喜欢的老师
- 使用oc的block方法回调
- 电梯门禁系统服务器一般在哪,电梯控制系统与门禁系统的区别
- android 广告库sdk,GitHub - adxdata/sdk-android-demo: 美数广告SDK(Android)示例
- 接口自动化-接口请求数据准备-如何生成随机姓名、年龄、号码、email等
- 脑动力PHP函数速查效率手册pdf
- 简单的交换排序法(选择排序)。
- vscode设置C++代码格式化(Clang-Format)
- 解决实例化servlet报错500