如何以缩放的方式执行多个MySQL INSERT(PHP)

Tom*_*Tom 2 php mysql optimization scaling

我们在PHP代码中有一个循环,它将行插入表中.例如:

while ($info = mysql_fetch_assoc($someQuery)) {
    mysql_query("INSERT INTO X (i,j) VALUES ($info['ii'],$info['jj'])");
}
Run Code Online (Sandbox Code Playgroud)

几个月前这很好,因为循环只会迭代几次.但是,由于我们的网站获得更多流量,此循环现在有时会迭代1000次或更多次.该表有一些开销(4,305 KiB),这个表中的SELECT出现在MySQL慢速日志中,可能是因为他们不得不等待一长串INSERT释放锁?

我应该如何优化代码以便更好地扩展?

有些事情我认为我可能会尝试:

  • INSERT DELAYED - 需要深入研究.它有帮助吗?
  • 尝试在同一查询中插入多行.但是我应该设置什么限制?50,500,1000?

Ale*_*ett 7

什么是$ someQuery?你能使用INSERT ... SELECT语法吗?