天天看点

MySQL · 8.0新特性· Invisible Index

从mysql8.0开始支持隐藏索引特性,也就是所谓的invisible index。对于不可见的索引,优化器将直接忽略掉。我们可以通过该特性来影响优化器的行为。另外这也可以视为在drop一个索引之前的缓冲,临时把索引设置为不可见后,再观察应用是否正常或有报错什么的,如果一切ok,再最终删除。

对应的8.0.0的release note:

在8.0.0中仅支持innodb,在8.0.1版本中修改成支持所有引擎(代码尚未release),对应release note:

<a href="http://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html">官方文档</a>

需要注意,把索引设置为不可见后,在引擎层的底层存储,索引依然是需要继续被维护的(从commit的diff可以看到,innodb部分的代码是完全没有改动的),只是在server层对优化器不可见而已。

index是否隐藏的属性存放在系统表mysql.indexes的列is_visible中。

继续阅读