原文:MySQL选错索引导致的线上慢查询事故

前言 又和大家见面了 又两周过去了,我的云笔记里又多了几篇写了一半的文章草稿。有的是因为质量没有达到预期还准备再加点内容,有的则完全是一个灵感而已,内容完全木有。羡慕很多大佬们,一周能产出五六篇文章,给我两个肝我都不够。好了,不多说废话了... 最近在线上环境遇到了一次SQL慢查询引发的数据库故障,影响线上业务。经过排查后,确定原因是SQL在执行时,MySQL优化器选择了错误的索引 不应该说是 ...

2020-07-30 20:39 1 813 推荐指数:

查看详情

错误使用MySQL前缀索引导致查询

前端时间跟一个DB相关的项目,alanc反馈有一个查询,使用索引比不使用索引很多倍,有点毁三观。所以跟进了一下,用explain,看了看2个查询不同的结果。 不用索引查询的时候结果如下,实际查询中速度比较块。 mysql> explain select * from ...

Sun May 19 06:33:00 CST 2013 3 2049
MySQL 选错索引的原因?

MySQL 中,可以为某张表指定多个索引,但在语句具体执行时,选用哪个索引是由 MySQL 中执行器确定的。那么执行器选择索引的原则是什么,以及会不会出现选错索引的情况呢? 先看这样一个例子: 创建表 Y,设置两个普通索引, 创建一个存储过程用于插入数据。 MySQL: 5.7.27 ...

Thu May 21 19:52:00 CST 2020 0 1825
mysql为什么有些时候会选错索引

1、基本概念 在MySQL中一张表其实是可以支持多个索引的。但是,你写SQL语句的时候,并没有主动指定使用哪个索引。也就是说,使用哪个索引是由MySQL来确定的。 一般在数据库使用的时候回遇到这样的问题,一条本来可以执行很快的语句,却由于MySQL选错索引导致执行 ...

Fri Feb 22 19:42:00 CST 2019 0 570
Mysql使用left join连表查询时,因连接条件未加索引导致查询很慢

背景 最近一个后台功能列表,业务人员反馈查询和导出速度非常。 通过定位发现列表查询和数据导出都是使用的同样的一个连表查询SQL。 这个功能刚上线不久,起初查询和导出速度都是蛮快的,把这个SQL放到测试环境也是挺快的。 对比了一下测试环境和生产环境相关表结构都是一样的,之后我们把目光放在 ...

Thu Mar 31 15:01:00 CST 2022 0 3570
mysql5.6创建索引导致锁表阻塞查询

结论:添加索引时,如果有对该表的查询,会导致索引添加延时等待 添加索引语句:alter table tb_name add index idx_xx(col_name); 执行添加索引的SQL: 通过show processlist; 发现有锁 ...

Wed Nov 01 18:15:00 CST 2017 0 9079
mysql 查询索引碎片

mysql 查询所有碎片语句 SHOW TABLE STATUS LIKE 'logs' ---------logs是带有索引的表名称 如果Data_free大于0 表示有索引碎片产生 可以使用如下语句清理碎片 OPTIMIZE TABLE `logs` -------logs ...

Thu Oct 26 21:46:00 CST 2017 0 2133
10 | MySQL为什么有时候会选错索引

前面我们介绍过索引,你已经知道了在MySQL中一张表其实是可以支持多个索引的。但是,你写SQL语句的时候,并没有主动指定使用哪个索引。也就是说,使用哪个索引是由MySQL来确定的。 不知道你有没有碰到过这种情况,一条本来可以执行得很快的语句,却由于MySQL选错索引,而导致执行速度变得 ...

Thu Jan 24 21:05:00 CST 2019 0 2053
线上查询的排查

最近查看查询日志,一直有看到SELECT * FROM tb_name的SQL语句,在之前SQL审核的时候,也没发现有这些SQL的存在,所以很好奇这里怎么出现的,后来用了vc-mysql-sniffer脚本去抓SQL来分析,也没有找出SELECT * 之类的SQL,下面我上图让分析一下 ...

Wed Oct 07 00:07:00 CST 2015 0 2489
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM