MySQL 8.3 Release Notes
本节描述了MySQL如何响应磁盘满错误(例如 “设备上没有剩余空间”),以及配额超出错误(例如 “写入失败” 或 “用户块限制达到”)。
本节适用于写入 MyISAM
表。它也适用于写入二进制日志文件和二进制日志索引文件,除了将 “行” 和 “记录” understanding as “事件”。
当磁盘满条件发生时,MySQL 执行以下操作:
-
它每分钟检查一次,看看是否有足够的空间写入当前行。如果有足够的空间,它继续执行,就像什么也没有发生一样。
-
每 10 分钟,它在日志文件中写入一条条目,警告磁盘满条件。
要缓解这个问题,采取以下操作:
-
要继续,只需要释放足够的磁盘空间以插入所有记录。
-
或者,要中止线程,使用 mysqladmin kill。线程将在下一次检查磁盘时中止(在一分钟内)。
-
其他线程可能正在等待引起磁盘满条件的表。如果您有多个 “锁定” 线程,杀死等待磁盘满条件的线程将使其他线程继续。
对前述行为的例外是使用 REPAIR TABLE
或 OPTIMIZE TABLE
或在 LOAD DATA
或 ALTER TABLE
语句后创建索引时。所有这些语句可能创建大型临时文件,如果不处理,将对系统造成很大的问题。如果磁盘在 MySQL 执行这些操作时变满,它将删除大型临时文件并将表标记为崩溃。例外是,对于 ALTER TABLE
,旧表将保持不变。