php - 如何以可扩展的方式执行多个 MySQL INSERT (PHP)

标签 php mysql optimization scaling

我们的 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?

最佳答案

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

关于php - 如何以可扩展的方式执行多个 MySQL INSERT (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2153760/

相关文章:

php - SQL php 回滚不起作用

mysql - 根据结果​​递归查询和更改目标表

python - 有人在 Cygwin 上安装 MySQLdb for Python 吗?

php - 具有两个日期字段的日期范围内高于 x 的字段的 MySQL 总和

php - 通过查询在 PHP 中删除 Access 数据库

mysql - 左外连接和左连接一样吗?

python - 使用 Scipy 最小化数据线性组合的函数

MySQL : ORDER BY FIELD/GROUP BY

c# - PivotViewer 加载我的收藏集非常慢

如果存在,PHP重命名文件名将数字附加到结尾