# B.3.3.4 MySQL 如何处理完整磁盘

本节介绍 MySQL 如何响应磁盘已满错误(例如“设备上没有剩余空间”)和配额超出错误(例如“写入失败”或“达到用户块限制”)。

本节与写入相关MyISAM表。它也适用于对二进制日志文件和二进制日志索引文件的写入,只是对“行”和“记录”的引用应理解为“事件”。

当发生磁盘满情况时,MySQL 会执行以下操作:

  • 它每分钟检查一次以查看是否有足够的空间来写入当前行。如果有足够的空间,它会继续,就好像什么都没发生一样。

  • 每 10 分钟它会向日志文件写入一个条目,警告磁盘已满情况。

    要缓解此问题,请执行以下操作:

  • 要继续,您只需释放足够的磁盘空间来插入所有记录。

  • 或者,要中止线程,请使用mysqladmin 杀.线程在下次检查磁盘时中止(在一分钟内)。

  • 其他线程可能正在等待导致磁盘已满情况的表。如果您有多个“锁定”线程,杀死等待磁盘已满条件的一个线程可以使其他线程继续。

    上述行为的例外情况是当您使用维修台要么优化表或者当索引被批量创建后加载数据或经过更改表陈述。所有这些语句都可能创建大型临时文件,如果留给它们自己,将对系统的其余部分造成大问题。如果在 MySQL 执行这些操作时磁盘已满,它会删除大的临时文件并将表标记为已崩溃。例外是对于更改表,旧表保持不变。