MariaDB(11.4 GA)解决了MySQL临时表空间无限增大的问题
MySQL BUG复现:
影响版本:MySQL 5.7 和 8.0
复现步骤:
- 创建一个包含1000万行记录的
sbtest1表(可以使用sysbench工具生成数据)。
- 创建一个临时表
sbtest2,其结构与sbtest1相同:
mysql> CREATE TEMPORARY TABLE sbtest2 LIKE sbtest1;- 向临时表
sbtest2插入1000行数据:
mysql> INSERT INTO sbtest2 SELECT * FROM sbtest1;- 退出会话,临时表
sbtest2被系统自动删除:
mysql> EXIT;- 然而,在MySQL中,InnoDB 临时表(例如
ibtmp1)所占的空间不会被释放,导致专用共享表空间不断增大。
MariaDB 解决方案:
在MariaDB中,您可以通过设置 innodb_truncate_temporary_tablespace_now 系统变量,在无需重启数据库的情况下缩减临时表空间:
MariaDB> SET GLOBAL innodb_truncate_temporary_tablespace_now = 1;这一改进有效避免了MySQL中临时表空间持续膨胀的问题。
















