MySQL 8.0 中的隐藏特性
Contents
隐藏有关的特性
隐藏列
8.0.23 新增隐藏列特性。什么是隐藏列?它基本上是一个表的常规列,具有自己的名称和数据类型。它像任何其他常规列一样处理和更新,唯一的区别是对应用程序不可见。换句话说,只有在 SELECT 语句中明确搜索它时,才能访问它;否则,它就像一个不存在的列。
使用 INVISIBLE
关键字创建隐藏列
|
|
隐藏列需要指定字段查询
|
|
使用 VISIBLE
将隐藏列设置为可见
|
|
隐形性的元数据在 information_schema 中可用,INVISIBLE/VISIBLE 关键字在 binlog 中保留,以便正确复制所有更改。
生成的隐藏主键
这个特性在 MySQL 8.0.30 开始提供。生成的隐藏主键(GIPK)是一种特殊的隐藏列,仅适用于 InnoDB 表。如果不显示创建主键,InnoDB 会创建一个隐藏的主键,但是 GIPK 提供的新特性使主键可以变得可用和最后可见。
默认情况下,此功能被禁用,因此 MySQL 将继续像过去一样运行。要启用 GIPK,您必须设置以下动态系统变量(它具有全局和会话作用域):
|
|
隐藏索引
MySQL 8.0 的第一个版本中引入,可以使索引对优化器不可见,以便测试如果该索引不存在,查询的性能会如何。不过,当索引不可见时,在针对表执行任何 DML 语句(INSERT、UPDATE、DELETE、REPLACE)时,它仍会得到更新。
可以使用以下语句将索引设置为不可见和再次可见:
|
|