【问题标题】:mysql batch insertmysql批量插入
【发布时间】:2011-12-08 06:30:03
【问题描述】:

我正在批量插入 80k 记录和每批 1200 条记录。 查询执行良好。问题是我正在从 mssql 服务器获取数据并从中创建一个批处理数组。所以有一些变化是由于某种原因导致批量插入失败。

但是当批量插入失败时,它会针对该特定批次的所有 1200 条记录。

那么,有什么方法可以找出如何从批量插入失败的 1200 条记录中获取准确的记录。

还有一个问题。

在进行这些插入时,网站会因更新而关闭。

有没有什么方法可以在这段时间内网站没有关闭。

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 感谢您的回复,但日志文件将显示批量查询意味着插入表(列)值(),(),()......。不是哪个特定的插入导致批处理失败。
  • 日志文件的某处一定有错误行,基于此您可以追查批处理并找到问题。

标签: mysql insert bulkinsert batch-insert


【解决方案1】:

没有任何工具能给你带来更高的性能,因为你的瓶颈是你的服务器...... 降低服务器负载的方法是使用事务或使用“延迟插入”。

交易:[http://dev.mysql.com/doc/refman/4.1/...-commands.html] 如果您的数据库支持它(mysql 可能需要特定的后端来支持它,具体取决于 mysql 版本),您通过发送“start tansaction”开始事务,然后一个接一个地发送所有插入,并以“提交”或“回滚”。 这种方法有一个很大的优势,即 db 知道它不必在提交之前重新计算索引。

插入延迟:[http://dev.mysql.com/doc/refman/4.1/...t-delayed.html] 这是一个特殊的 mysql 命令,它可以让您在 db 上提示插入的重要性。 当数据库不会被占用做其他事情时,总是会处理延迟的插入,与标准插入/更新相比,它的优先级较低。

【讨论】:

  • 感谢瓦西姆的回复。交易有问题,我无法使用。对于延迟插入,我的网站是一个产品销售和拍卖网站。并且插入延迟并不能保证您实际插入的时间,因此产品成本和拍卖的变化不会立即反映。所以我没有去。
  • 有没有工具,当然是免费的,可以显示mysql服务器负载和时间等
  • 所以用你正在使用的编程语言的脚本来做。应用适当的检查并处理错误。
  • 我正在编写脚本并在单个查询中批量插入 2k 行。但是我怎么知道 2k 批中的哪些单条记录触发了批插入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
相关资源
最近更新 更多