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

[](<>)[](<>)

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

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

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

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

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

    要缓解此问题，请执行以下操作：

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

-   或者，要中止线程，请使用[**mysqladmin 杀**](mysqladmin.html).线程在下次检查磁盘时中止（在一分钟内）。

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

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