天天看點

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中。

繼續閱讀