当您在 MyISAM 表上运行删除时,它会在表中留下一个洞,直到该表被优化。
这会影响并发插入。在默认设置下,concurrent_inserts 仅适用于没有孔的表。但是,在 MyISAM 的文档中,在 concurrent_insert 部分下它说:
为所有 MyISAM 表启用并发插入,即使是那些有漏洞的表。对于有孔的表,如果它正在被另一个线程使用,则在表的末尾插入新行。否则,MySQL 会获取一个正常的写锁并将该行插入到孔中。
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_concurrent_insert
这是否意味着 MyISAM 会在向表中插入新行时自动填充孔?以前我认为在优化表之前不会修复这些孔。