首页 > 数据库 >MySQL调优学习-快速获取占用CPU较高的SQL语句

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

时间:2023-11-18 09:45:18浏览次数:36  
标签:14.6 20 SQL 39872 mysql connection 调优 MySQL 26.3

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)

查询效果为

image


查看进程开始的时间

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工具
计划近期有时间学习一下相关内容. 

标签:14.6,20,SQL,39872,mysql,connection,调优,MySQL,26.3
From: https://www.cnblogs.com/jinanxiaolaohu/p/17804754.html

相关文章

  • php_mysql: dlt - 数据库操作
    php_mysql:  dlt-数据库操作    一、数据库的建立和数据插入 1、数据库建立1DROPDATABASE`tmp`;234CREATEDATABASEIFNOTEXISTS`tmp`;567USEtmp;8910CREATETABLEIFNOTEXISTS`dlt2023`(11`uid`INTNOTNU......
  • php_mysql: PHP 格式化输出数据
    php_mysql: PHP格式化输出数据    一、php源程序1[wit@fedoramysql]$catphp_mysql2#!/usr/bin/php345<?php678910//filename=php_mysql1112131415functiontest()16{17echo"hello,php!\n";18}1......
  • PostgreSQL 和 MySQL 技术全面剖析
    本文介绍MySQL和PostgreSQL的一些特性对比,让大家了解二者的优劣,更好的做出选择。当前国内的现状,互联网公司使用MySQL的较多,PostgreSQL的使用比例反而不高,但相信看到PG的新特性后,你会爱上她。当然MySQL作为最流行的数据库,依然会吸引大部分人的眼球。PostgreSQL标榜自己是世界上最......
  • mysql函数常见字符串函数
    1、BIT_LENGTH返回值为二进制的字符串str长度。--格式:BIT_LENGTH(str)selectBIT_LENGTH('abc'); 2、CONCAT返回结果为连接参数产生的字符串。--格式:concat(str1,str2,…)selectCONCAT('a','b','c')   3、ELT假设n等于1,用这个n去跟后一个数比较,如果n大......
  • mysql函数常见数学函数
    1、ABS(x)返回x的绝对值 --格式:ABS(X)selectABS(23) 2、PI()返回圆周率π,默认显示6位小数--格式:PI()selectPI()  3、SQRT(x)返回非负数的x的二次方根--selectSQRT(X)selectSQRT(2)    4、MOD(x,y)返回x被y除后的余数--selectMOD(......
  • NET8 ORM 使用AOT SqlSugar
    AOT介绍.Net8的本地预编机器码AOT,它几乎进行了100%的自举。微软为了摆脱C++的钳制,做了很多努力。也就是代码几乎是用C#重写,包括了虚拟机,GC,内存模型等等。而需要C++做的,也就仅仅是引导程序,本篇通过代码来看下这段至关重要的引导程序的运作模式。 支持功能 SqlSugarORM使用......
  • 在Linux上设置MySQL的简单密码
    在Linux上更改MySQL的密码导航目录在Linux上更改MySQL的密码导航1、先查看之前生成的随机密码2、输入密码加入数据库3、先设置一个符合密码验证难度比较大的密码3.1一开始尝试了简单的不行3.2选择难度大的成功了4、把限制密码位数设小一点,复杂度类型调底一点4.1将密码复杂度校验......
  • SQL 查询优化指南:SELECT、SELECT DISTINCT、WHERE 和 ORDER BY 详解
    SELECT关键字SQL的SELECT语句用于从数据库中选择数据。SELECT语句的基本语法如下:SELECTcolumn1,column2,...FROMtable_name;其中,column1,column2,等是您要从表中选择的字段名称,而table_name是您要选择数据的表的名称。如果要选择表中的所有列,您可以使用SELECT*语法。......
  • MySQL了解、SQL、约束
    数据库数据库的基本概念数据库的英文单词:DataBase简称:DB什么数据库?用于存储和管理数据的仓库数据库的特点持久化存储数据的。其实数据库就是一个文件系统方便存储和管理数据使用了统一的方式操作数据库--SQL(适用于关系型数据库)我们先了解几个数据库:MYSQL:开源免费的数......
  • MySQL DQL语句
    查询数据SELECTDQL是数据库查询语言,主要就是通过SELECT关键字来从数据库中查询指定规则的数据。语法格式:SELECT需要查询的列名字FROM表名称WHRER查询条件说明:1、如果需要查询所有的列,SELECT的参数指定为*,如果查询的列名有多个,使用逗号隔开2、如果没有......