10.7 预览功能: CONVERT PARTITION

如果您正在使用表分区,您可能听说过 ALTER TABLE … EXCHANGE PARTITION … WITH TABLE … 命令。它在 MariaDB 中一直存在。但是如果您查阅手册(任何手册)或在网上搜索,您会发现它几乎唯一的用例是将分区转换为独立的非分区表,或者将独立的非分区表转换为分区。

当时的用法设计得一点都不直观。要将分区转换为表,您首先需要创建一个与分区结构相同的空表,然后将其与分区交换,最后删除空分区。

查询缓存和分区

其他人一样,我们对 MySQL 中一个导致查询缓存分区无法可靠协同工作的 bug 的修复并不满意。简单来说,这个 bug 是,如果启用了查询缓存并且使用了分区表,并且分区表使用的是事务性引擎(如 InnoDB 或 XtraDB),查询缓存在某些情况下可能会返回错误的结果。

返回错误结果无疑是一个高优先级的 bug。然而,上游的修复是禁用所有来自分区表的查询缓存。我们想要一个更好的解决方案,因为查询缓存对于分区表非常有益,就像它对非分区表一样有益。…