MySQL调优学习-快速获取占用CPU较高的SQL语句


背景

早上突然发现一个MySQL数据库的CPU使用率居高
因为是一个混布的环境上面还有一个redis
怕影响业务就上去像查看一下具体是何种原因导致的速度慢
因为实发突然,并没有mysql em 等工具
所以从网上学到了一个方法进行简单学习与验证. https://blog.csdn.net/qq_28721869/article/details/115820752

学习过程

ssh 到高CPU的数据库服务器

top 输入 P 查看最高的是MySQL的进程. 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
1644407 mysql 20 0 26.3g 14.6g 39872 S 399.0 64.7 2693:35 mysqld 然后输入 PID为第一步查询出来的PID信息
top -Hp 1644407 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2066704 mysql 20 0 26.3g 14.6g 39872 R 20.3 64.6 7:21.32 connection
2066836 mysql 20 0 26.3g 14.6g 39872 R 20.3 64.6 7:41.53 connection
1884703 mysql 20 0 26.3g 14.6g 39872 R 20.0 64.6 20:22.51 connection
2029584 mysql 20 0 26.3g 14.6g 39872 R 20.0 64.6 7:21.81 connection
2039926 mysql 20 0 26.3g 14.6g 39872 R 20.0 64.6 7:19.38 connection
2044950 mysql 20 0 26.3g 14.6g 39872 R 20.0 64.6 7:21.09 connection
2045032 mysql 20 0 26.3g 14.6g 39872 R 20.0 64.6 7:41.30 connection
2066656 mysql 20 0 26.3g 14.6g 39872 R 20.0 64.6 7:38.89 connection
2066713 mysql 20 0 26.3g 14.6g 39872 R 20.0 64.6 7:40.71 connection
2066803 mysql 20 0 26.3g 14.6g 39872 R 20.0 64.6 7:21.77 connection
2078251 mysql 20 0 26.3g 14.6g 39872 R 20.0 64.6 7:30.40 connection
2078880 mysql 20 0 26.3g 14.6g 39872 R 20.0 64.6 7:19.57 connection
1883812 mysql 20 0 26.3g 14.6g 39872 R 19.7 64.6 13:26.13 connection 因为平均CPU使用率是 20% 所以充分怀疑进程已经至少存在了 30个小时左右 可以使用 sar -f /var/log/sa/sa01 的方式查看CPU的近期使用率.

根据pid 查看具体的 SQL语句

将pid 保存进 1.txt 然后使用如下方式进行处理.
for i in `cat 1.txt` ; do echo -n "$i ,"; done 执行SQL为: SELECT
b.HOST,
b.db,
b.USER,
a.THREAD_OS_ID "os_id",
b.id "processlist_id",
b.command,
b.time,
b.state,
a.PROCESSLIST_INFO,
b.info "sql"
FROM
PERFORMANCE_SCHEMA.threads a,
information_schema.PROCESSLIST b
WHERE
b.id = a.processlist_id
AND a.THREAD_OS_ID in (2066704 ,2066836)

查询效果为


查看进程开始的时间

ps -T -eo pid,tid,lstart,etime,cmd  |grep $threadid |grep -v grep 

需要注意 ps 默认不显示  thread 信息. 只显示 prcess的信息
需要增加 -T 参数,并且选择 tid 才会将 threads的信息展示出来进行查询 比如我这边这个的显示信息为:
1644407 2066704 Wed Nov 1 09:09:00 2023 1-00:19:11

MySQL其他学习

在作者的其他blog上面看到了 myawr工具
计划近期有时间学习一下相关内容.

MySQL调优学习-快速获取占用CPU较高的SQL语句的更多相关文章

  1. JVM调优之Java进程消耗CPU过高

    JVM调优之Java进程消耗CPU过高 查找问题思路 1.查看cpu使用率,发现有线程cpu占用率很高  tops 咱们拿18092线程举例示范 2.查询pid对应的进程 ps -ef|grep 18 ...

  2. mysql调优学习笔记

    性能监控 使用show profile查询剖析工具,可以指定具体的type 此工具默认是禁用的,可以通过服务器变量在绘画级别动态的修改 set profiling=1; 当设置完成之后,在服务器上执行 ...

  3. Linux:快速找到占用CPU过高的Thread

    1.通过top命令找到高耗CPU的进程,记下PID 2.使用命令ps -mp PID -o THREAD,tid,time找到高耗CPU的那些线程 3.jstack PID 4.对每个高耗CPU的线程 ...

  4. MySQL 调优基础(一) CPU与进程

    一般而言,MySQL 的调优可以分为两个层面,一个是在MySQL层面上进行的调优,比如SQL改写,索引的添加,MySQL各种参数的配置:另一个层面是从操作系统的层面和硬件的层面来进行调优.操作系统的层 ...

  5. MySQL 调优/优化的 100 个建议

    MySQL 调优/优化的 100 个建议   MySQL是一个强大的开源数据库.随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈.这里提供 101 条优化 MySQL 的建议.有些技巧适合特定 ...

  6. MySQL调优系列基础篇

    前言 有一段时间没有写博客了,整天都在忙,上班,录制课程,恰巧最近一段时间比较清闲,打算弄弄MYSQL数据库. 关于MySQL数据库,这里就不做过多的介绍,开源.免费等特性深受各个互联网行业喜爱,尤其 ...

  7. mysql调优 基础

    MySQL调优可以从几个方面来做: 1. 架构层:做从库,实现读写分离: 2.系统层次:增加内存:给磁盘做raid0或者raid5以增加磁盘的读写速度:可以重新挂载磁盘,并加上noatime参数,这样 ...

  8. Mysql占用CPU过高如何优化,如何解决

    2017-02-28 15:13 331人阅读 评论(0) 收藏 举报   MySQL占用CPU过高如何优化 一次生产DB服务器的 超负荷运行问题解决: 1.查看生产DB服务器top列表, 执行 to ...

  9. 数据库MySQL调优实战经验总结<转>

    数据库MySQL调优实战经验总结 MySQL 数据库的使用是非常的广泛,稳定性和安全性也非常好,经历了无数大小公司的验证.仅能够安装使用是远远不够的,MySQL 在使用中需要进行不断的调整参数或优化设 ...

  10. Mysql占用CPU过高如何优化?(转)

    原文:http://bbs.landingbj.com/t-0-241441-1.html MySQL处在高负载环境下,磁盘IO读写过多,肯定会占用很多资源,必然CP会U占用过高. 占用CPU过高,可 ...

随机推荐

  1. SQL优化案例(2):OR条件优化

    接下来上一篇文章< SQL优化案例(1):隐式转换>的介绍,此处内容围绕OR的优化展开. 在MySQL中,同样的查询条件,如果变换OR在SQL语句中的位置,那么查询的结果也会有差异,在多个 ...

  2. 现代 CMake 模块化项目管理指南

    现代 CMake 模块化项目管理指南 参考小彭老师的视频教程整理笔记,学习同时方便快速查阅,视频链接如下 [公开课]现代 CMake 模块化项目管理指南[C/C++] 对应课程 PPT 和源码见 ht ...

  3. struts2 Filter中无法转发请求

    struts2 Filter中无法转发请求 项目升级struts2版本为最新以修复漏洞,由于一些历史原因,部分访问在升级后访问404,直接对历史代码改造代价太大. 于是使用拦截器对其转发.重定向,但是 ...

  4. 深入理解JavaScript堆栈、事件循环、执行上下文和作用域以及闭包

    1. 堆栈 在JavaScript中,内存堆是内存分配的地方,调用栈是代码执行的地方. 原始类型的保存方式:在变量中保存的是值本身,所以原始类型也被称之为值类型. 对象类型的保存方式:在变量中保存的是 ...

  5. 全域Serverless+AI,华为云加速大模型应用开发

    日前,华为全联接大会2023在上海召开.华为云CTO张宇昕在大会上发布了基于Serverless技术的大模型应用开发框架,框架以面向AI领域全新升级的FunctionGraph 3.0为核心,将Baa ...

  6. SQL优化老出错,那是你没弄明白MySQL解释计划

    摘要:数据库的解释计划阐明了sql的执行过程,展示了执行的细节,只要根据数据库告诉我们的问题按图索骥的分析就可以. 本文分享自华为云社区<轻松搞懂mysql的执行计划,再也不怕sql优化了> ...

  7. 如何使用appuploader制作描述文件​

    如何使用appuploader制作描述文件​ 承接上文我们讲述了怎么制作证书,本文我们来看下怎么制作描述文件吧.​制作描述文件前我们首先我们来添加一个测试设备,后面再制作描述文件. 1.添加测试设备​ ...

  8. python 提供一段文本和关键词列表进行标红处理

    def highlight_keywords_html(text, keywords): for keyword in keywords: text = text.replace(keyword, ' ...

  9. Github 自建一个 Helm Charts 库

    前言 在构建私有的 charts 仓库之前,有几个先决条件: Helm 已经安装,版本号是 v3 拥有一个 Github 账号 初始化仓库 在 github 仓库上新建一个仓库,我这里命名为 helm ...

  10. Nginx--安装&&配置文件

    官网:http://nginx.org/en/download.html nginx版本:1.18   一 安装 1 下载预编译环境(预编译报错需要安装什么库 直接在库名后面接 -devel 使用yu ...