MySQL实战:问题排查与监控

news2025/1/15 23:23:43

在这里插入图片描述

常见问题

有更合适的索引不走,怎么办?

MySQL在选取索引时,会参考索引的基数,基数是MySQL估算的,反映这个字段有多少种取值,估算的策略为选取几个页算出取值的平均值,再乘以页数,即为基数

查看索引基数

show index from table_name

使用force index可以强制使用索引

重新统计索引信息,会重新计算索引的基数

analyze table

count 语句慢,如何解决?

count(非索引字段):无法使用覆盖索引,最慢
count(索引字段):可以使用覆盖索引但依然要取出数据判空
count(1):不需要取出数据,但需要判断1是否为null
count(*):经过专门优化,不需要判空,理论最快

获取不到数据库连接

事务提交慢导致获取不到数据库连接

查看超时释放

show variables where variable_name like '%timeout'

查看线程

-- 查看当前数据库运行的所有线程
show processlist
-- show processlist只能列出前100条,想看所有使用如下命令
show full processlist

查看最大连接数

show variables like '%max_connections%'

修改最大连接数

set GLOBAL max_connections = 200;

读写分离导致读不到最新的数据

应用层做了读写分离后,有可能会读取到旧数据,此时可以强制从主库查询数据。

说一个由于读写分离导致的生产问题,我们在service层有一个切面,根据方法名的前缀来决定走主库还是从库,有个方法名是以get开头,切面就将数据源设置为从库,结果里面有写入的操作,到了生产环境一直报错。为什么我们在测试环境没遇到这个问题?因为我们在测试环境主库和从库配置的是同一个数据源

数据库服务器负载过大

CPU使用率不断升高,QPS不断降低

避免大事务

一般要在访问量比较低的时候执行批量修改数据

我们原来在生产遇到一个挺有意思的事情,批量更改数据,发出了大量的binlog,然后另外一个应用监听binlog同步数据,产生的大量binlog导致数据同步很慢,影响了正常的业务流程

数据修改尽量放在事务后部,降低锁时间

alter table 之前,查看是否有长事务还未提交

查看长事务:information_schema库innodb_trx表
查看锁:information_schema库innodb_locks表
查看阻塞的事务:information_schema库innodb_lock_waits表

监控指标

性能类指标

名称说明
QPS数据库每秒处理的请求数量
TPS数据库每秒处理的事务数量
并发数数据库实例当前并行处理的会话数量
连接数连接到数据库会话的数量
缓存命中率Innodb的缓存命中率

功能类指标

名称说明
可用性数据库是否正常对外提供服务
阻塞当前是否有阻塞的会话
死锁当前事务是否产生了死锁
慢查询实时慢查询监控
主从延迟数据库主从延迟时间
主从状态数据库主从复制链路是否正常

QPS

各种请求的数量

show global status like 'com%'

各种请求的和

show global status like 'queries'

qps = (queries2- queries1) / 时间间隔

TPS

show global status where variable_name in ('con_insert', 'com_delete', 'com_update')

tc = com_insert + com_delete + com_update

tps = (tc2 - tc1) / (time2 - time1)

数据库并发数

show global status like 'threads_running'

数据库连接数

show global status like 'threads_connected'

报警阈值:threads_connected / max_connections > 0.8

Innodb缓存命中率

show global status like 'innodb_buffer_pool_read%'

(Innodb_buffer_pool_read_requests - Innodb_buffer_pool_reads) / (Innodb_buffer_pool_read_requests) *100%

Innodb_buffer_pool_read_requests:从缓存池中读取的次数
Innodb_buffer_pool_reads:从物理磁盘读取的次数

数据库可用性

周期性的连接数据库并执行select @@version

监控慢查询

通过慢查询日志监控

死锁

查看最近一次死锁信息

SHOW ENGINE INNODB STATUS

使用pt-deadlock-logger工具

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

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

相关文章

经验分享:专业知识库的搭建秘诀都在这里啦!

我想必每个人都有过被一堆纷繁复杂的信息搞得头疼不已的时候,对吧?那么你是否想过,如果我们有一个专门收藏整理这些信息的地方,会变得多么方便呢?这就是知识库的作用。所以,接下来我就要向大家分享如何搭建…

如何设计一个高并发的系统--简谈

设计一个高并发系统可以从下面这些角度来考虑。 所谓设计高并发系统,就是设计一个系统,保证它整体可用的同时,能够处理很高的并发用户请求,能够承受很大的流量冲击。 我们要设计高并发的系统,那就需要处理好一些常见…

【MySQL】-知识点整理

1、存储引擎 -- 查询数据库支持的存储引擎 show engines; -- 查询当前数据库使用的存储引擎 show variables like %storage_engines%; 主要的存储引擎说明: 1)MyISAM:无外键、表锁、所有索引都是非聚簇索引、无事务、记录表总条数、删除表…

Realsense 相机SDK学习(一)——librealsense使用方法及bug解决(不使用Ros)

一.介绍 realsense相机是一个intel开发出来的一款深度相机,我之前使用他来跑过slam,也配置过他的驱动,在此附上realsense的相机驱动安装方法:Ubuntu20.04安装Intelrealsense相机驱动(涉及Linux内核降级) …

支持S/MIME证书的邮件客户端有哪些?

S/MIME证书,也叫做邮件安全证书,支持安全/多用途互联网邮件扩展协议(S/MIME协议),是通过加密和数字签名来确保电子邮件的安全性、保密性和完整性的数字证书。GDPR、HIPAA、FDA等多个行业都要求邮件发送方在发送邮件时对…

EasyPoi 教程

文章目录 EasyPoi教程文档1. 前传1.1 前言 这个服务即将关闭,文档迁移到 http://www.wupaas.com/ 请大家访问最新网站1.2 Easypoi介绍1.3 使用1.4 测试项目1.5 可能存在的小坑 2. Excel 注解版2.1 Excel导入导出2.2 注解注解介绍ExcelTargetExcelEntityExcelCollectionExcelIgn…

如何在群晖NAS部署WPS容器并实现无公网IP远程访问本地office软件

文章目录 1. 拉取WPS Office镜像2. 运行WPS Office镜像容器3. 本地访问WPS Office4. 群晖安装Cpolar5. 配置WPS Office远程地址6. 远程访问WPS Office小结 7. 固定公网地址 wps-office是一个在Linux服务器上部署WPS Office的镜像。它基于WPS Office的Linux版本,通过…

Express学习(四)

使用Express写接口 创建基本的服务器 创建API路由模块 编写GET接口 编写POST接口 CORS跨域资源共享 什么是CORS CORS由一系列HTTP响应头组成,这些HTTP响应头决定浏览器是否阻止前端JS代码跨域获取资源。浏览器的同源安全策略默认会阻止网页“跨域”获取资源。但如…

AI论文速读 | TPLLM:基于预训练语言模型的交通预测框架

论文标题:TPLLM: A Traffic Prediction Framework Based on Pretrained Large Language Models 作者:Yilong Ren(任毅龙), Yue Chen, Shuai Liu, Boyue Wang(王博岳),Haiyang Yu(于海洋&#x…

【Linux进程的知识点】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录 前言 操作系统的知识补充 我们来理解一个用户操作接口: 进程的理解 进程的基本概念 描述进程-PCB task_struct-PCB的一种 task_ struct内容分类 …

【四】【算法分析与设计】贪心算法的初见

455. 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有…

Terrace联合创始人兼CEO Jesse Beller确认出席Hack.Summit() 2024区块链开发者大会

在科技创新的浪潮中,区块链技术以其独特的去中心化、透明性和安全性,正逐渐成为引领未来发展的重要力量。在这样的背景下,备受瞩目的Hack.Summit() 2024区块链开发者大会即将于4月9日至10日在香港数码港盛大举行。本次大会的亮点之一&#xf…

Linux系统安全②SNAT与DNAT

一.SNAT 1.定义 利用SNAT技术实现2台私网地址都可以访问公网 2.实验环境准备 (1)三台服务器:PC1客户端、PC2网关、PC3服务端。 (2)硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡 (3&a…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)中篇

onBeforeUnload onBeforeUnload(callback: (event?: { url: string; message: string; result: JsResult }) > boolean) 刷新或关闭场景下,在即将离开当前页面时触发此回调。刷新或关闭当前页面应先通过点击等方式获取焦点,才会触发此回调。 参数…

docker部署多功能网络工具箱

功能 查看自己的IP:从多个 IPv4 和 IPv6 来源检测显示本机的IP 查看IP信息:显示所有 IP 的相关信息 可用性检测:检测一些网站的可用性 WebRTC 检测:查看使用 WebRTC 连接时使用的 IP DNS 泄露检测:查看 DNS 出口信息 …

NVMFS5A160PLZT1G汽车级功率MOSFET P沟道60 V 15A 满足AEC-Q101标准

关于汽车电子AEC Q101车规认证? 是一种针对分立半导体的可靠性测试认证程序,由汽车电子协会发布。这个认证程序主要是为了确保汽车电子产品在各种严苛的条件下能够正常工作和可靠运行。它包括了对分立半导体的可靠性、环境适应性、温度循环和湿度变化等…

STM32平替GD32有多方便

众所周知, GD32一直模仿STM32,从未被超越。 我最近公司使用的GD32E230C6T6 这款芯片有48个引脚。 属于小容量的芯片。 我有一个用STM32写的代码,之前是用的 STM32F103CB 这款芯片是中容量的。 不过在keil中,只需要这两步,就能使用原来的逻辑,几乎不用修改代码。 1. …

武汉儿童医院变电所电力运维平台系统的设计及应用

彭姝麟 Acrelpsl 1 引言 2015年国务院发布《中共中央、国务院关于进一步深化电力体制改革的若干意见》(中发[2015]9号),简称“电改9号文”。而本次新电改的重点是“三放开一独立三强化”:输配以外的经营性电价放开、售电业务放开…

APP测试基本流程以及APP测试要点

一、 APP测试基本流程 1、流程图 2、测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。 3、测试资源 测试任务开始前,…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的车牌检测系统(Python+PySide6界面+训练代码)

摘要:本篇博客详细介绍了如何利用深度学习技术开发一个先进的车牌检测系统,并附上了完整的实现代码。系统核心采用了强大的YOLOv8算法,并对前代版本如YOLOv7、YOLOv6、YOLOv5进行了详尽的性能评估,包括mAP和F1 Score等关键指标的对…