mysql 性能排查

mysql 下常见遇到的问题有,mysql连接池耗尽,死锁、慢查、未提交的事务。等等我们可能需要看;我们想要查看的可能有
1.当前连接池连接了哪些客户端,进行了哪些操作
2.当前造成死锁的语句有哪些,是哪个客户端上的,我们如何杀掉结束掉这些连接?
3.我们当前的慢查询有哪些?执行了多少次?这些语句有没有记录下来?
4.如何查看是不是因为屋里内存、磁盘等原因导致mysql性能下降等?

一、查看mysql的物理性能

使用以下命令查看mysql进程 性能瓶颈排查 top/free/vmstat/sar/mpstat

查看mysqld进程的cpu消耗占比
确认mysql进程的cpu消耗是%user, 还是sys%高
确认是否是物理内存不够用了
确认是否有swap产生

使用下面工具查看

top (%cpu load %MMEM)free -gtvmstat -S m 1 (procs io cpu)sar -u 1 (%user)sar -d 1

查看mysql的物理连接池状态

show processlist; # 查询数据库的瞬时操作,查看当前连接运行的情况

 show processlist

在这里插入图片描述
程序端一般采用线程池的hikriCP 、duriu等数据库线程池框架,在项目启动的时候就会连接上数据库,从这里我们也能看到数据库连接池线程连接行数据库的线程和每个线程的客户端的占用操作、是否有死锁等

各字段描述

  • id:一个标识,kill一个语句的时候很有用 (如 kill 11)
  • user:显示当前用户,如果不是root,这个命令就只显示你权限范围内的sql语句
  • host:显示这个语句是从哪个端口上发出的,可用来追踪出问题语句的用户
  • db:显示这个进程目前连接的是哪个数据库
  • command:显示当前连接的执行命令,一般就是休眠(sleep),查询(query),连接(connect)
  • time:这个状态持续的时间,单位是秒
  • state(重要):显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,state只是语句执行中的某一个状态,一个SQL语句,已查询为例,可能需要经过copying to tmptable,sorting result, sending data等状态才可以完成;
    状态为:sleeping,代表资源未释放
    状态为:copying to tmptable on disk 临时表从内存存储转为磁盘存储,会导致大量的IO压力,频繁出现需要优化
    状态为:locked 代表查询锁住了或有更新操作锁定(更新操作需要使用正确的索引)
    状态为:sorting for group 正在处理select查询的记录,如果sending data连接过多,通常是某查询的影响结果集过大,需要优化
    状态为:reading from net 如大量出现,迅速检查数据库到前端的网络状态和流量
    info:显示这个SQL语句,因为长度有限,所以长的SQL语句就显示不全,但是一个判断问题语句的重要依据

status状态详解

status为 :sorting for group 的状态分析

长时间的Sending data从引擎层读取数据返回给server端
1.长时间存在的原因:

  • 没有合适的索引 查询效率低下
  • 读取大量数据 读取缓慢
  • 系统负载高 读取缓慢
  • 可能有长时间的没有提交的事务导致锁表等待

如何做:

  • 1 加上合适的索引
  • 2 改写sql
  • 3 增加LIMIT限制每次读取量
  • 4 检查&升级IO设备性能
status 长时间等待MDL锁 (waiting for table metadata lock) 分析

原因:

  • DDL被阻塞 进而阻塞其他后续sql
  • DDL之前的sql长时间未结束,这个表未释放锁

举例:
a.开启一个事务。未提交,这个时候fege表的id=1这行有一个排它锁。
在这里插入图片描述

 START TRANSACTION; update  t_goods set name = '李四' where id = 1

b.开启另外一个DDL事务,重新打开另外一个session连接
在这里插入图片描述
c.查看是什么事务进程id未释放,以及sql信息,打开另外一个mysql的session,
在事务没有完成之前,fege表上的锁不会释放,alter table同样获取不到metadata的独占锁。
在这里插入图片描述
d。找到未提交事物的sid,通过show processlist看不到Table上有任何操作,但实际上存在有未提交的事务,可以在 information_schema.innodb_trx或者performance_schema.events_statements_current中查看到。

 select  * from   information_schema.innodb_trx

在这里插入图片描述

在这里插入图片描述
e. 执行 select * from performance_schema.events_statements_current\G; 可以看到当前未提交的sql信息

 select * from performance_schema.events_statements_current

在这里插入图片描述在这里插入图片描述

f 通过上面查看到未提交的THREAD_ID查看对应的进程id
在这里插入图片描述
g 通过查看:

select  object_type,object_schema,object_name,lock_type,lock_duration,lock_status,owner_thread_id from performance_schema.metadata_locks;

在这里插入图片描述
在这里插入图片描述

#再次查看
在这里插入图片描述

如何做:

  • 提高每条sql的效率
  • kill掉长时间运行的sql
  • 把DDL放在夜间低谷时段
  • 采用pt-osc执行DDL
  • 长时间的sleep
  • 占用连接数
  • 消耗内存未释放
    可能有行锁(甚至是表锁未释放)
    如何做:
  • 适当调低timeout
  • 主动kill超时不活跃连接
  • 定期检查锁、锁等待
  • 可以利用pt-kill工具
其他状态 Copy to tmp table [on disk]

执行alter table修改表结构,需要生成临时表
建议放在夜间低谷进行, 或者用pt-osc

状态 Creating tmp table

常见于group by没有索引的情况
需要拷贝数据到临时表[内存/磁盘上]
执行计划中会出现Using temporary关键字
建议创建合适的索引,消除临时表

状态 Creating sort index

常见于order by没有索引的情况
需要进行filesort排序
执行计划中会出现Using filesort关键字
建议创建排序索引
其他排除方法

use information_schema; SELECT * from innodb_lock_waits;
show engine innodb status;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/180042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS常用数据类型转换(数字型和字符串型之间转换)

提供了5中基本数据类型:数字 number 字符串 string 布尔 boolean 空值 null 未定义的 undefined 常用的是数字型和字符串型之间的转换,常用的转换方法如下: 1 数字型转换成字符串型 a) 使用String()方法…

开题答辩稿

各位老师好,我是开题答辩人,我做的开题报告的题目是《》,我的论文指导老师是老师。 -------------------------------------------------------------------------------------- 我将从一下几个方面对我的开题进行介绍 ------------------…

算法通关第十三关-青铜挑战数学基础问题

数组元素积的符号 描述 : 已知函数 signFunc(x) 将会根据 x 的正负返回特定值: 如果 x 是正数,返回 1 。如果 x 是负数,返回 -1 。如果 x 是等于 0 ,返回 0 。 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的…

vue3+ts 全局函数和变量的使用

<template><div>{{ $env }}<br />{{ $filters.format("的飞机") }}</div> </template><script setup lang"ts"> import { getCurrentInstance } from "vue"; const app getCurrentInstance(); console.log…

07-学成在线修改/查询课程的基本信息和营销信息

修改/查询单个课程信息 界面原型 第一步: 用户进入课程列表查询页面,点击编辑按钮编辑课程的相关信息 第二步: 进入编辑界面显示出当前编辑课程的信息,其中课程营销信息不是必填项,修改成功后会自动进入课程计划编辑页面 查询课程信息 请求/响应数据模型 使用Http Client测…

11月28日作业

提示并输入一个字符串&#xff0c;统计该字符中大写&#xff0c;小写字母个数&#xff0c;数字个数&#xff0c;空格个数以及其他字符个数&#xff0c;要求使用C风格字符串完成 #include <iostream>using namespace std;int main() {string str;int A0,a0,num0,backspac…

基于MBC调制方法的准Z源三相逆变器Simulink建模与仿真

摘 要 与传统&#xff3a;源逆变器相比&#xff0c;准&#xff3a;源逆变器具有电容电压应力低的优点。但是基于简单升压调制策略的准&#xff3a;源逆变器存在开关器件电压应力大和开关频率高的缺陷。将SPWM调制策略应用于准&#xff3a;源逆变器&#xff0c;并在不产生电流纹…

UDS 相关时间参数

文章目录 UDS 全部时间参数UDS 应用层诊断时间参数1、P2 Client P2 Server P2* Client P2* Server 图例2、S3 Client S3 Server 图例 UDS CNA-TP网络层时间参数1、N_As/N_Ar 图例2、N_Bs 图例3、 N_Br 图例4、N_Cs 图例N_Cr 图例 UDS 网络层流控制时间参数 UDS 全部时间参数 UD…

【Qt之QSqlTableModel】介绍及使用

【Qt之QSqlTableModel】介绍及使用 描述常用方法槽函数信号示例 描述 QSqlTableModel类为单个数据库表提供可编辑的数据模型。 QSqlTableModel是一个高级接口&#xff0c;用于从单个表中读写数据库记录。 它建立在较低级别的QSqlQuery之上&#xff0c;可用于向QTableView等视…

智安网络|探索云安全合规要求:等保2.0时代的新趋势解析

随着信息技术的不断发展和应用的广泛普及&#xff0c;信息安全问题日益凸显&#xff0c;特别是在云计算时代&#xff0c;企业对于云平台的安全保障需求更为迫切。等级保护&#xff08;等保&#xff09;作为我国信息安全的基本要求&#xff0c;已经进入了2.0时代&#xff0c;对于…

TS-函数

函数类型的定义 一般函数需要定义它的参数类型和返回值类型作为回调函数(函数类型表达式) function fn(cb: (msg: string) >void) {}可以作为对象调用的函数&#xff08;调用签名&#xff09; type DescribeFunction {msg: string(n: number): void }作为构造函数&#…

1087 All Roads Lead to Rome(最短路求最大权值,最短路路径条数,节点个数,回溯路径)

&#xff08;这题基本上把最短路能求的都求了个遍&#xff0c;除了麻烦一点&#xff0c;难度其实还好&#xff09; &#xff08;卡题原因&#xff1a;dijks漏了对路径条数的初始化。&#xff09; #include<bits/stdc.h> using namespace std; #define int long long i…

深入Android S (12.0) 探索Framework之输入系统IMS的构成与启动

文章目录 前言一、输入系统的基本组成部分二、输入系统相关源码分析1、IMS 构建1.1、SystemServer # startOtherServices()1.2、InputManagerService1.3、NativeInputManager # nativeInit()1.4、NativeInputManager1.5、InputManager1.6、InputDispatcher1.7、InputReader1.8、…

Filament引擎分析--command抽象设备API

1. 前言 Filament中使用了FrameGraph来管理渲染管线&#xff0c;需要准备两点&#xff1a; 设备接口抽象&#xff1a;设备API抽象为Command资源抽象&#xff1a;使用虚拟资源&#xff0c;在实际用到时再创建&#xff0c;方便剔除无用资源 下面就围绕Filament中设备API抽象为…

网络安全小白自学

一、网络安全应该怎么学&#xff1f; 1.计算机基础需要过关 这一步跟网安关系暂时不大&#xff0c;是进入it行业每个人都必须掌握的基础能力。 计算机网络计算机操作系统算法与数据架构数据库 Tips:不用非要钻研至非常精通&#xff0c;可以与学习其他课程同步进行。 2.渗透技…

2015年五一杯数学建模C题生态文明建设评价问题解题全过程文档及程序

2015年五一杯数学建模 C题 生态文明建设评价问题 原题再现 随着我国经济的迅速发展&#xff0c;生态文明越来越重要&#xff0c;生态文明建设被提到了一个前所未有的高度。党的十八大报告明确提出要大力推进生态文明建设&#xff0c;报告指出“建设生态文明&#xff0c;是关系…

目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】图像分割(补充篇)

目录 前言 知识储备 图像分割-行为检测 算法原理 什么是图像分割?

NOI / 1.7编程基础之字符串 30:字符环 c语言 两次遍历解决循环

描述 有两个由字符构成的环。请写一个程序&#xff0c;计算这两个字符环上最长连续公共字符串的长度。例如&#xff0c;字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起&#xff0c;构成一个环&#xff1b;字符串“MADJKLUVKL”的首尾连在一起&#xff0c;构成一个另一个环&…

【Python】torch.exp()和 torch.sigmoid()函数详解和示例

本文对torch.exp&#xff08;&#xff09;和 torch.sigmoid&#xff08;&#xff09;函数进行原理和示例讲解&#xff0c;以帮助大家理解和使用。 目录 torch.exp函数原理运行示例 torch.sigmoid&#xff08;&#xff09;函数原理运行示例torch.sigmoid相关知识 结合运行 torc…

2023网络安全产业图谱

1. 前言 2023年7月10日&#xff0c;嘶吼安全产业研究院联合国家网络安全产业园区&#xff08;通州园&#xff09;正式发布《嘶吼2023网络安全产业图谱》。 嘶吼安全产业研究院根据当前网络安全发展规划与趋势发布《嘶吼2023网络安全产业图谱》调研&#xff0c;旨在进一步了解…