MySQL ibtmp1 临时表空间增长到多大?

How large does MySQL ibtmp1 Temporary Tablespace grow?

我们在具有 500GB 数据库的 1TB SSD 上有一个 MySQL Master 运行。从下面的屏幕截图中可以看出,运行 超出了 space,因为 ibtmp1 增长太大了。现在是194GB。

MySQL Manual 说:

"When the data file reaches the maximum size, queries fail with an error indicating that the table is full."

因此我们有两个担忧:

  1. 如果此文件继续增长并填满 SSD,我们的数据库将停止工作。
  2. 如果我们限制这个文件的大小,比如 100GB,那么如果它被填满,将“查询失败并出现错误,表明 table 已满。”

我确定手册有误导性或者我们误解了,因为 MySQL 的默认设置肯定不可能允许它填满磁盘然后失败?

我很喜欢MySQL,但是有些事情只能拍脑门了。这是其中之一。但首先要做的是:

当你有这么大的 ibtmp1 文件时,你要么有

  • 临时构建的查询table,可能是不小心进行了交叉连接
  • 同时创建相对较小的临时 table 的大量查询
  • 很长 运行 笔交易
  • 需要处理的超大数据

在所有情况下,我都会立即采取行动,如果可能的话,我会消除这些疑问。在 innodb 状态监视器或您用来识别这些查询的任何工具中查看您的慢查询日志。

要回答您的问题,请不要指望 MySQL 到处都使用合理的默认值。

我不了解你,但对我来说,由于磁盘已满而停止工作的数据库不是一个选项。当查询失败时,它就不那么痛苦了。请记住,我们很可能在谈论错误的查询。

我已将所有服务器配置为最大 10GB,对此我非常慷慨。

[mysqld]
innodb_temp_data_file_path=ibtmp1:12M:autoextend:max:10G

另外请记住,您必须重新启动 MySQL 服务器才能缩小 ibtmp1 文件。与设置 innodb_temp_data_file_path 选项相同。于是拍额头