我一直在使用MySQL,但正如许多人痛苦地发现的那样,InnoDB引擎正在创建大型且不可收缩的ibdata1文件。激活 innodb_file_per_table 有助于但不能解决问题。
我正在考虑迁移到MariaDB并使用XtraDB引擎。我知道这是 InnoDB 的改进版本,但我想知道它是否仍然带有这个重要的流程。我没有在任何地方看到它,所以我猜这不是 MariaDB 的问题,但我想确定一下。
有没有人有这方面的确切信息?提前致谢。
当然,使用是标准的推荐配置,当然,只有在生成海量系统表空间文件之前innodb_file_per_table
启用它才能提供最大的好处, .ibdata1
假设你做的所有这些都是正确的,如果你仍然看到它显着增长,那么你正在做一些事情让它增长。
见https://www.percona.com/blog/2013/08/20/why-is-the-ibdata1-file-continuously-growth-in-mysql/
重做日志 (!)、数据字典和厨房水槽都仍然存储在那里,所以它不像 MySQL (InnoDB) 只是分配越来越多的磁盘空间然后就忘记它,然后要求更多. 您的工作量在很大程度上决定了这种增长。
XtraDB从磁盘数据结构的角度来看是InnoDB。拿一个 MySQL 服务器,停止它,提取 MariaDB 或 Percona 服务器二进制文件,然后启动它们……XtraDB 像老板一样使用你的 ibdata1 和日志文件和 .ibd 文件,就像它们一样。据推测,它也会以另一种方式进行,但没有人尝试过。(开玩笑。但说真的,在我的数十台 MySQL 式服务器的网络中,我从未将机器迁移到 MariaDB 或 Percona Server,后来想,“哇,我真希望我能回到 Oracle 的 MySQL 版本。”关于 XtraDB 使用现有的 ibdata1 和 .ibd 文件的部分不是开玩笑,这都是真的。我什至从 Solaris 上的 MySQL 中获取了原始二进制数据文件,并将它们复制到 Linux 机器上,并使用它们启动 MariaDB - 没问题。)
以相同的工作量呈现它,您应该期望类似的增长......尽管不一定相同的增长。但是 XtraDB与InnoDB 不同,它使用与 InnoDB 相同的文件完成相同的事情。它在很多方面都更智能、更快,并且可以在有限的范围内进行配置以限制其增长,但它不会对您的磁盘空间限制产生极大的影响,因为它需要相同的空间来完成相同的工作。从根本上说,就其在磁盘中的存在而言,它仍然是 InnoDB。