MySQL线上慢SQL问题分析处理小记

相同数据量表结构,线上执行12s 本地执行0.1s过程分析

1. 慢SQL信息

	SELECT t1.id,t2.idFROM t_platform_target_standard_target_index t1LEFT JOIN t_platform_target_standard t2 ON t1.target_number = t2.target_numberWHERE t1.delete_flag = 0 AND t2.user_num = 'user001'  AND t2.dimension = 5AND t1.classify_index_number IN  (  'TA-001',...省略大概20个记录
)

2. 确认环境及MySQL配置是否优化

线上本地
服务器信息image.pngimage.png
SQL执行时间12S0.1S
MySQL版本5.6.445.7.27-log
数据量及索引情况线上表拷贝至本地,所以表与索引一致

  看着服务器差距不是太大,于是排查配置,发现线上无任何配置,开始优化配置
关闭Selinux,效果不明显。加上一些Mysq基础配置优化如下, 其中innodb_buffer_pool_size 影响最大。时间降至8s ,同时可以排除是硬件问题。

#具体参数大小,请根据服务器配置做调整
innodb_buffer_pool_size = 10G 
max_connections=1000 
skip_name_resolve = 1
transaction_isolation = READ-COMMITTED
group_concat_max_len = 102400
tmp_table_size = 1342177280
max_heap_table_size = 1342177280
binlog_cache_size = 524288

3. 分析执行计划

  以为同样的数据与索引,执行计划应该是一模一样的,但是走的索引不同发现问题。
  t1数据量为900549,t2数据量为55311,两表索引情况如下。
t1索引情况
t2索引情况
执行计划分析情况
本地:
image.png
线上:
image.png
  两个环境居然走的索引不一样!本地,只走了一个t1的target_number索引,而且先是t2(小表)后是t1(大表),既然本地快,那就让线上索引跟本地一致。

4. 修改索引

  删除idx_classify 索引,执行计划分析如下。查询时间8.734s ,又走了classify_index_number索引,无效果。
image.png
  继续删除classify_index_number索引,执行计划分析如下。查询时间为0.095s! 索引顺序与执行索引与本地一致,问题解决。
image.png

总结

  MySQL版本不同导致旧版本的MySQL走了错误的索引,查询时间奇慢。条件允许的情况下升级MySQL好处还是很多的,会解决老版本的安全漏洞,同时避免此类索引优化错误的问题,更好的索引选择也会带来更高的效率。
  不是所有慢SQL都是句加索引就能解决的,排除环境问题的情况下,要结合表结构设计、数据量、SQL,修改或创建索引。
  索引名创建需规范
Java开发手册 索引规约对命名要求
Java开发手册的很多要求,看似简单但都是经验的血泪史,遵守的话能减少很多不必要的问题。

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

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

相关文章

基于STM32的光电传感器应用开发实例

基于STM32的光电传感器应用开发是一种常见的嵌入式系统应用,光电传感器可以用于检测物体的有无、位置、颜色、亮度等信息,被广泛应用于工业自动化、机器人技术、智能家居等领域。本文将介绍如何在STM32上进行光电传感器应用开发,并提供相应的…

Word 将页面方向更改为横向或纵向

文章目录 更改整个文档的方向更改部分页面的方向方法1:方法2: 参考链接 更改整个文档的方向 选择“布局”>“方向”,选择“纵向”或“横向”。 更改部分页面的方向 需要达到下图结果: 方法1: 选:中你要在横向页面…

基于vim的开发编辑器配置

整体的vim的设置是在 /etc/vim/vimrc 文件中。如果想设置所有用户的配置,在里面设置就可以了,配置和.vimrc是一样的,在最后面添加下面2中的语句。 不建议修改/etc/vimrc 文件,每个用户可以在用户根目录中设置vim,新建.vimrc。命令…

在 Ubuntu 上安装 pip的方法

下面是在Ubuntu上安装pip的完整攻略: 一、安装pip前的准备工作 在开始安装pip之前,我们需要先进行一些准备工作,包括更新软件源和安装必要的依赖。 更新软件源 使用以下命令更新软件源: sudo apt-get update安装必要的依赖 …

VSCode的介绍和入门

VSCode简介 跨平台:VSCode支持Windows、macOS和Linux等多种操作系统。开源:VSCode使用MIT许可协议,允许用户自由修改和分发源代码。支持多种编程语言:VSCode支持C、C、JavaScript、TypeScript、Python、Java、PHP、Go、HTML/CSS等…

探索 Node.js 与 C++ 的绑定:使用 node-addon-api

在 Node.js 中使用 C 进行绑定是一种强大的方式,可以充分利用 C 的性能优势。在本文中,我们将探讨如何使用 node-addon-api 来实现这一目标。 1. 为什么选择 C 绑定? Node.js 是一个基于 JavaScript 的平台,它使得开发人员能够使…

GPT系列概述

OPENAI做的东西 Openai老窝在爱荷华州,微软投资的数据中心 万物皆可GPT下咱们要失业了? 但是世界不仅仅是GPT GPT其实也只是冰山一角,2022年每4天就有一个大型模型问世 GPT历史时刻 GPT-1 带回到2018年的NLP 所有下游任务都需要微调&#x…

Pycharm 切换interpreter---python的环境和第三方库问题

这篇回答两个问题: 1.为什么在 pycharm中打开新的project,切换interpreter 之后发现自己之前装的库消失了? 2.为什么 interpreter 切换到python3.8了, terminal 还是在 3.9?? 问题的关键:搞懂什…

编程笔记 html5cssjs 012 HTML分块

编程笔记 html5&css&js 012 HTML分块 一、HTML 块级元素二、HTML 内联元素三、HTML <div> 元素四、HTML <span> 元素五、HTML<article>元素六、<article>元素和<div>元素的区别与联系小结 像报纸排版一样&#xff0c;很多时候需要把平面…

LTPI协议的理解——2、LTPI实现的底层架构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 LTPI协议的理解——2、LTPI实现的底层架构 前言一、体系结构三、实现细节四、物理接口信号传输方法总结 前言 前面讲了LTPI的定义和大概结构&#xff0c;接下来继续理解LTPI…

【百度前端三面面试题】

在某乎看到的《百度前端三面面试题全部公开&#xff0c;三面的最后一个问题令我窒息》 其中下面三个问题没有给出答案&#xff0c;我虽然是前端出身&#xff0c;但也面试过一些人&#xff0c;大概分析一下这些问题。 面试中问这几个问题的目的是什么 &#xff0c;怎么回答 上…

理解开源协议GPL、MIT、BSD、Apache License

开源协议是一种法律文件&#xff0c;规定了使用、修改和分享开源软件的规则和条件。以下是一些常见的开源协议及其相同点和区别&#xff1a;GPL&#xff08;GNU General Public License&#xff09;&#xff1a;GPL 是一种比较严格的开源协议&#xff0c;要求使用者如果对开源软…

MySQL 数值函数,字符串函数与多表查询

MySQL像其他语言一样,也提供了很多库函数,分为单行函数和分组函数(聚合函数),我们这里先简易介绍一些函数,熟悉就行,知道怎么使用即可. 数值函数 三角函数 指数与对数函数 进制间的转换函数 字符串函数 注:LPAD函数是右对齐,RPAD函数是左对齐 多表查询 注:如果为表起了别名,就…

elasticsearch系列四:集群常规运维

概述 在使用es中如果遇到了集群不可写入或者部分索引状态unassigned&#xff0c;明明写入了很多数据但是查不到等等系列问题该怎么办呢&#xff1f;咱们今天一起看下常用运维命令。 案例 起初我们es性能还跟得上&#xff0c;随着业务发展壮大&#xff0c;发现查询性能越来越不…

边缘计算网关:重新定义物联网数据处理

随着物联网&#xff08;IoT&#xff09;设备的爆炸式增长&#xff0c;数据处理和分析的需求也在迅速增加。传统的数据处理方式&#xff0c;将所有数据传输到中心服务器进行处理&#xff0c;不仅增加了网络负担&#xff0c;还可能导致数据延迟和安全问题。因此&#xff0c;边缘计…

Java虚拟机中的垃圾回收

2 垃圾回收 2.1 判断一个对象是否可回收 2.1.1 引用计数法 如果一个对象被另一个对象引用&#xff0c;那么它的引用计数加一&#xff0c;如果那个对象不再引用它了&#xff0c;那么引用计数减一。当引用计数为 0 时&#xff0c;该对象就应该被垃圾回收了。 但是下面这种互相…

kafka实现延迟消息

背景 我们知道消息中间件mq是支持延迟消息的发送功能的&#xff0c;但是kafka不支持这种直接的用法&#xff0c;所以我们需要独立实现这个功能&#xff0c;以下是在kafka中实现消息延时投递功能的一种方案 kafka实现延时消息 主要的思路是增加一个检测服务&#xff0c;这个检…

0开始配置Cartographer建图和导航定位

0开始配置Cartographer 日期&#xff1a;12-19 硬件&#xff1a;激光雷达IMU 小车的tf变换&#xff1a; 建图配置 lua文件配置&#xff1a;my_robot.lua include "map_builder.lua" include "trajectory_builder.lua"options {map_builder MAP_BUILDE…

华为无线ac双链路冷备和热备配置案例

所谓的冷备和热备&#xff0c;冷备就是不用vrrp和hsb协议同步ap和用户信息&#xff0c;主的断了等七十五秒后&#xff0c;备的capwap和ap连接上去。 双链路冷备不用vrrp和hsb 双链路热备份只用hsb同步ap和用户信息&#xff0c;不用vrrp&#xff0c;两个ac可以不用在同一个二层…

【Linux】缓冲区理解

需要云服务器等云产品来学习Linux的同学可以移步/–>腾讯云<–/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;优惠多多。&#xff08;联系我有折扣哦&#xff09; 文章目录 1. 一个奇怪的现象2. 为什么要有缓冲区3. 缓冲区的刷新策略4. 缓冲区在哪里5. 实现一…