标准的 mysqldump 将创建一个表、禁用键、插入数据并重新启用键。这是有原因的。但是,当表为空时,键仍然被禁用并重新启用。
LOCK TABLES `Brands` WRITE;
/*!40000 ALTER TABLE `Brands` DISABLE KEYS */;
/*!40000 ALTER TABLE `Brands` ENABLE KEYS */;
UNLOCK TABLES;
这个小代码块,重复多次,肯定会无缘无故地减慢插入速度。有什么方法可以删除它,或者首先阻止它的创建吗?我想这没什么大不了的,但我仍然很好奇。
别担心,
DISABLE KEYS
这些ENABLE KEYS
都是过去 mysqldump 的产物这些命令对 InnoDB 表
DISABLE KEYS
绝对ENABLE KEYS
没有影响(它们没有为 InnoDB 存储引擎实现)。它们是专门为 MyISAM 表设计的。您只会收到警告。早在 2011 年 5 月,我就已经写过很多次了
请参阅有关此的 MySQL 文档
您可以创建没有它们的转储
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html说:
换句话说,如果您要将数据恢复到 MyISAM 表,这是一个性能优势。优势有多大很难预测,因为这取决于您的表中有多少索引,以及服务器性能等其他因素。
正如 Rolando 在他的回答中所写,它对 InnoDB 表没有影响,在我看来,我们都应该默认使用 InnoDB 存储引擎。多年来,我一直没有找到使用 MyISAM 表的任何充分理由。