线上系统mysql数据库突然sql执行不出来记录

今天中午1点多休息的时候突然用户反馈页面出不来结果,连忙排查了服务器和数据库,发现服务器cpu、内存都正常,数据库阻塞了一大堆sql,那就是sql的事了,单独取出来一个分析,过程就不再赘述了,大致就是查看执行计划发现有索引的字段执行计划中显示 Using join buffer (Block Nested Loop)**,**说明索引失效,sql大概是这样:

复制代码
JOIN pur_purchase_order_detail F ON C.purchase_order_detail_id = F.id 
	AND C.purchase_order_id = F.purchase_order_id
	JOIN pur_purchase_order G ON C.purchase_order_id = G.id

1.先检查了表的索引,都在

2.后来发现俩表的字符集不一样,一个是 utf8mb4 一个是 utf8 ,然后看了下排序规则,发现排序规则也不一样

问题找到了,那就好办了

1.直接 alter

  1. 新建一个字符集和排序规则一样的表,把表数据整到新表里,然后rename

执行的过程中把所有相关的sql全部杀掉,就成功改完了,接下来就是排查整个数据库的字符集和排序规则,空闲的时候刷成一致。

但是还有一个问题想请大神们解答一下,为啥字符集一直就不一样,之前也好用,突然就不好用了?

相关推荐
誰能久伴不乏8 小时前
桌面客户端的运行日志系统:SQLite 分块 + 独立写线程 + 文本降级
数据库·c++·qt·架构·sqlite
2401_8967321314 小时前
MySQL小笔记
mysql
程序员清风15 小时前
数据处理脚本工程化:日志、配置、命令行与测试
服务器·开发语言·数据库
正在走向自律16 小时前
数据集成产品的技术底座:从日志解析原理到 KFS 同步链路搭建(含建表与增删改查完整代码)
数据库·oracle·信创·数据集成·国产数据库·kingbasees·全量+增量同步
程序员塔塔喵16 小时前
【MySQL篇|第七篇】MySQL事务
数据库·mysql·mysql事务
独隅17 小时前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code
_孤傲_17 小时前
快速掌握 MySQL 语法
数据库·后端·mysql
数字新视界19 小时前
一体化机柜在数据中心运维中的创新应用与优势分析
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
SelectDB19 小时前
从 StarRocks 走向 Apache Doris:如何实现引擎平滑替换与架构升级?
大数据·数据库·数据分析
为思念酝酿的痛19 小时前
MySQL的操作
数据库·mysql