mysql5.7 的文档 中,说未来会移除表分区功能?
As of MySQL 5.7.17, the generic partitioning handler in the MySQL server is deprecated, and is removed in MySQL 8.0, when the storage engine used for a given table is expected to provide its own (“native”) partitioning handler. Currently, only the InnoDB and NDB storage engines do this.
但是对于上面这对话,我不是很理解,用翻译软件翻译了一下:
但是翻译软件翻译出来的,都不通顺,让我不理解这段话到底是什么意思
意思是说,从 mysql5.7.17 开始,不再支持表分区功能?并且要在 mysql8 中移除对表分区的支持?
但是 mysql8 却是支持表分区!
破案了
Q:为什么 mysql5.7 说会移除表分区功能?
mysql5.7 的文档 中,说未来会移除表分区功能?
原话如下:
As of MySQL 5.7.17, the generic partitioning handler in the MySQL server is deprecated, and is removed in MySQL 8.0, when the storage engine used for a given table is expected to provide its own (“native”) partitioning handler. Currently, only the InnoDB and NDB storage engines do this.
A:MySQL 5.7 引入了新的分区实现方式,并在文档中强烈建议使用新的实现方式,而不是使用旧的通用分区处理程序。由于新的实现方式更加高效和灵活,因此 MySQL 团队计划在未来将旧的通用分区处理程序移除。在 MySQL 8.0 中,只有使用 InnoDB 和 NDB 存储引擎的表才能提供本地分区处理程序,其他存储引擎将不再支持分区功能。因此,在使用表分区功能时,应该尽可能使用 InnoDB 或 NDB 存储引擎。
Q:上面说的“新的分区实现方式”,具体指的是什么?
A:在 MySQL 8.0 中,分区的实现方式发生了变化。具体来说,MySQL 8.0 引入了新的分区引擎,名为“NDB partitioning”,该引擎针对 NDB 存储引擎进行了优化,从而提供了更好的性能和可伸缩性。同时,InnoDB 存储引擎也有了一些改进,例如支持更多种类型的分区表达式等,这也使得 InnoDB 存储引擎更加适合于使用分区功能。因此,MySQL 8.0 中建议使用 InnoDB 或 NDB 存储引擎来实现分区。
Q:那“旧的通用分区处理程序”指的是什么?
A:“旧的通用分区处理程序”指的是 MySQL 5.6 及之前版本中用于支持表分区的一种通用实现方式。它是在 MySQL 5.1 中引入的,允许对表按照某个列的范围、哈希值或列表进行分区,但它的实现效率不高,而且在实现上还存在一些问题。因此,在 MySQL 5.7.17 中开始逐步弃用并计划在 MySQL 8.0 中移除。
Q:mysql 的 "原生分区的存储引擎" 是什么?
A:"原生分区的存储引擎" 指的是 MySQL 存储引擎本身支持分区功能,而不是通过通用分区处理程序实现的分区。MySQL 的 InnoDB 和 NDB 存储引擎支持原生分区,其他存储引擎如 MyISAM 不支持原生分区。通过使用原生分区,可以更高效地执行查询和维护分区表。
Q:mysql 的分区表有什么缺点?
A:虽然 MySQL 的分区表有许多优点,但也存在以下缺点: