2011-12-08 161 views
0

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

但是,当一个批量插入失败时,它会为该特定批次的所有1200个记录执行。

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

还有一个问题。

在做这些插入操作时,网站在更新的时候出现故障。

有没有什么办法,在这段时间以及该网站没有下降。

任何帮助将不胜感激。

感谢

+0

检查日志文件... – ComputerSaysNo

+0

感谢您的答复,但日志文件将显示批量查询意味着插入到表(列)values(),(),()...。不是哪个特定的插入导致批次失败。 –

+0

在日志文件中必须存在错误行,因为您可以搜索批处理并找到问题。 – ComputerSaysNo

回答

2

任何工具会给你更多的性能,为您的瓶颈是服务器...... 你能做些什么来降低服务器负载要么使用事务,或使用“插入延迟”。如果您的db支持它(mysql可能需要一个特定的后端来支持它,具体取决于mysql版本),您可以通过发送“start tansaction”启动一个事务,然后发送所有的插入内容另一个,并用“提交”或“回滚”完成交易。 这个方法有很大的好处,那就是db在你提交之前知道它不必重新计算索引。

插入延迟:[http://dev.mysql.com/doc/refman/4.1/...t-delayed.html] 这是一个特殊的mysql命令,可以让你给关于插件的重要性分贝的提示。 插入延迟总是会被处理,当数据库不会被占用做别的事情时,它比标准插入/更新具有低优先级。

+0

感谢Wasim的回复。交易存在问题,我无法使用它。而对于插入延迟,我的网站是一个产品销售和拍卖网站。并且插入延迟并不能保证您实际插入的时间,因此产品成本和拍卖的变更不会立即反映出来。所以我没有去追求它。 –

+0

是否有任何工具,当然是免费的一个,显示MySQL服务器的负载和时间等 –

+0

因此,通过您正在使用的编程语言的脚本。应用拨款检查并处理错误。 – 2011-12-08 09:36:06