如何优化MySQL中的慢速批插入忽略

如何优化MySQL中的慢速批插入忽略,mysql,optimization,Mysql,Optimization,刚刚将许多查询重写为批处理查询-foreach循环中不再有DB调用 其中一个新的批处理查询,以及将ignore插入数据透视表,每次需要1-4秒。它相当大,每次调用约100行,表也大于200万行 这是我的程序中当前的瓶颈。我是否应该考虑像以前那样锁桌子,但我听说它是…危险还是有其他选择我应该先考虑 因为它是一个透视表,所以有一个唯一的键,它由我正在更新的两行组成 您正在使用索引吗?为正确的列编制索引大大加快了速度。如果要进行大量更新和插入,有时在完成之前禁用索引是有意义的,因为重新索引需要时间。我

刚刚将许多查询重写为批处理查询-foreach循环中不再有DB调用

其中一个新的批处理查询,以及将ignore插入数据透视表,每次需要1-4秒。它相当大,每次调用约100行,表也大于200万行

这是我的程序中当前的瓶颈。我是否应该考虑像以前那样锁桌子,但我听说它是…危险还是有其他选择我应该先考虑


因为它是一个透视表,所以有一个唯一的键,它由我正在更新的两行组成

您正在使用索引吗?为正确的列编制索引大大加快了速度。如果要进行大量更新和插入,有时在完成之前禁用索引是有意义的,因为重新索引需要时间。我不明白锁桌子有什么用。此表是否由其他用户或应用程序使用?这可能是锁定会提高速度的主要原因。

这个调用是multi_curl回调函数的一部分,因此一个实例试图从表中读取数据的同时,另一个实例正在向其写入数据。我在想一些事情,比如锁定表、删除索引、插入、添加索引、解锁表。但是,正如您所说,索引需要时间。