本节描述 MySQL 如何响应磁盘已满错误(例如“设备上没有剩余空间”)和超出配额的错误(例如“写入失败”或 “达到用户块限制”)。
此部分与写入
MyISAM
表有关。它还适用于写入二进制日志文件和二进制日志索引文件,除了对“行”和“记录”的引用
应理解为“事件”。”
当磁盘已满情况发生时,MySQL 执行以下操作:
它每分钟检查一次以查看是否有足够的空间来写入当前行。如果有足够的空间,它会像什么都没发生一样继续。
每 10 分钟它会向日志文件写入一个条目,警告磁盘已满情况。
要缓解此问题,请执行以下操作:
要继续,您只需释放足够的磁盘空间来插入所有记录。
或者,要中止线程,请使用 mysqladmin kill。线程在下次检查磁盘时(一分钟后)中止。
其他线程可能正在等待导致磁盘已满情况的表。如果您有多个 “锁定”线程,则终止等待磁盘已满状态的一个线程可以使其他线程继续运行。
上述行为的例外情况是当您
在语句之后或之后使用REPAIR TABLE
或
OPTIMIZE TABLE
或在批处理中创建索引时。所有这些语句都可能创建大型临时文件,如果留给它们自己,会给系统的其余部分带来大问题。如果在 MySQL 执行任何这些操作时磁盘变满,它会删除大的临时文件并将表标记为已崩溃。例外情况是对于,旧表保持不变。
LOAD
DATA
ALTER
TABLE
ALTER
TABLE