【发布时间】:2011-01-10 08:36:24
【问题描述】:
我们的 PHP 代码中有一个循环,它将行插入到表中。例如:
while ($info = mysql_fetch_assoc($someQuery)) {
mysql_query("INSERT INTO X (i,j) VALUES ($info['ii'],$info['jj'])");
}
几个月前这很好,因为循环只会迭代几次。然而,由于我们的网站获得更多流量,这个循环现在有时会迭代 1000 次或更多次。该表有一些 overhead (4,305 KiB) 并且来自该表的 SELECT 出现在 MySQL slow-log 中,可能是因为它们必须等待一长串 INSERT 才能释放锁?
我应该如何优化代码以便更好地扩展?
我认为我可以尝试的一些事情:
- INSERT DELAYED - 需要调查一下。有帮助吗?
- 尝试在同一个查询中插入多行。但是我应该设置什么限制? 50、500、1000?
【问题讨论】:
标签: php mysql optimization scaling