MySQL 8.0 不可见索引使用

梦莱2年前技术文章643

一、具体信息

1、在提供 SQL 优化意见的时候包括了两个冗余索引的内容,具体内容如下:

查看慢 SQL 的时候发现 database 库 table 表中存在冗余索引,具体冗余索引情况如下:
KEY `key1` (`is_main`,`x`,`xx`,`xxx`),
KEY `key2` (`is_main`),
is_main 列 索引存在一定冗余。

database1 库 table1 表中存在冗余索引,具体冗余索引情况如下:
UNIQUE KEY `uk_key` (`account_sid`),
KEY `key1` (`account_sid`,`xx`)
uk_account_sid 列已具有唯一性,所以目前 KEY `key1` 为重复索引。

2、客户方反馈上一次优化sql时,把table1表的key1索引删除,导致 SQL 报错

3、反馈如下:

对于报错来说:报错原因可以了解到是因为这边使用了 force index,而这个索引被删掉了,导致的报错。

二、补充

该实例是mysql 8.0 的,可以先通过索引不可见(mysql 8.0 的新特性),测试一段时间,对业务没有影响后,再进行索引的删除。如果有影响,可以立刻恢复至可见即可。

use_invisible_indexes 参数:系统变量 optimizer_switch 的 use_invisible_indexes 值控制了优化器构建执行计划时是否使用隐藏索引。如果设置为 off (默认值),优化器将会忽略隐藏索引(与引入该属性之前的行为相同)。如果设置为 on,隐藏索引仍然不可见,但是优化器在构建执行计划时将会考虑这些索引

相关文章

CPU及磁盘性能监测

CPU及磁盘性能监测

一、简述sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。本次内容会用到这个包的两个命令 mpstat 和iostat。mpstat 是一个常用的多核 CPU 性能分析工具...

MySQL运维实战之备份和恢复(8.4)xtrabackup恢复全量备份

恢复全量备份恢复全量备份大致可以分成以下几步:解压备份文件、prepare备份文件、将数据copy到目标实例相关目录、启动数据库实例。解压文件如果备份时使用了xbstream,需要先解压备份文件。我们...

Kafka数据恢复

一、增量恢复增量恢复需要使用 MirrorMaker 来实现,下面是 MirrorMaker 的用法示例:# 创建MirrorMaker 配置文件cat > /tmp/mirror-maker....

NAS文件被删除问题排查

NAS文件被删除问题排查

一、问题现象客户业务方反馈服务器上挂载的nas文件被删除,业务中许多文件丢失,业务受到严重影响。需要我方协助排查。二、问题背景该nas挂载到两台业务服务器上,后端应用为java应用,存储内容为jpg、...

CDH配置HTTPS访问

CDH配置HTTPS访问

申请一台新的机器部署nginx,生成https/ssl证书的机器没有要求1.生成https/ssl证书[root@cdp01 ~]# mkdir -p /data/cert [root@cdp01 ...

Hbase Rowkey设计方法

良好的 rowkey 设计,应当遵循以上四大原则,并且能让数据分散,从而避免热点问题。下面是几种常用的 rowkey 设计方法。1 Salt 加盐这里说的 Salt 加盐方法,是给每一个 rowkey...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。