2012-03-23 110 views
1

我想更新innoDB表中的10000行。通常,完成需要几分钟的时间。在事务中准备好的语句

问题是如果互联网连接突然中断可能会发生意外。我们可以使用Transaction来处理这种情况。为了安全起见,我还在Transaction中使用了Prepared Statement,但出现了另一个问题:我无法在一个事务中更新所有10000行,因为Prepared Statement应该立即用尽我们所知的内存(描述为herehere)。

我该怎么办?

Prepared Statement更安全,性能良好但内存消耗。 转义安全性较差,性能较差,但所有10000行在一个事务中成功运行。

+1

你不能在单个事务中使用多个预处理语句吗?启动事务,一次重复准备好的语句,小块,直到所有数据加载,然后提交。 – 2012-03-23 03:36:10

+0

感谢Andrew,我尝试了这种方法,但似乎Prepared Statement在整个事务提交并且会话关闭之前不会释放内存。 – Alan 2012-03-23 03:52:24

+0

ouch:o(您使用的是什么语言? – 2012-03-23 03:57:29

回答

0

不支持在预处理语句中使用multiple语句。