gpt4 book ai didi

MySQL 在没有 TRANSACTION 的批量 INSERT 上暂停索引重建

转载 作者:可可西里 更新时间:2023-11-01 07:49:14 26 4
gpt4 key购买 nike

我有很多数据要 INSERT LOW_PRIORITY 到表中。由于每次插入行时都会重建索引,因此需要很长时间。我知道我可以使用事务,但在这种情况下,如果只有一行失败,我不希望整个集合都失败。

有什么方法可以让 MySQL 停止在特定表上重建索引,直到我告诉它可以恢复为止?

理想情况下,我想插入 1,000 行左右,设置索引执行其操作,然后插入接下来的 1,000 行。

我不能使用 INSERT DELAYED,因为我的表类型是 InnoDB。否则,INSERT DELAYED 对我来说是完美的。

这无关紧要,但我正在使用 PHP/PDO 访问 MySQL。如果您能提供任何建议,我们将不胜感激。谢谢!

最佳答案

ALTER TABLE tableName DISABLE KEYS
// perform inserts
ALTER TABLE tableName ENABLE KEYS

这会禁用所有非唯一索引的更新。缺点是这些索引也不会用于选择查询。

但是,您可以使用多插入 (INSERT INTO table(...) VALUES(...),(...),(...),这也将批量更新索引。

关于MySQL 在没有 TRANSACTION 的批量 INSERT 上暂停索引重建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5613756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com