我的应用程序当前需要将大量数据上载到数据库服务器(SQL Server)并在SQLite数据库(本地缓存)上本地上载。
出于速度目的,我在将数据插入数据库时总是使用事务。但是现在我正在处理每个插件批次大约20k行或更多的东西,我担心交易可能会导致问题。基本上,我不知道的是,如果交易对您可以在其下插入的数据量有限制。
将使用大量行的事务插入数据库的正确方法是什么?例如,您是否每1000行开始/提交一次?
答案 0 :(得分:1)
我没有看到任何问题这样做,但如果有任何约束/参照完整性错误,那么可能你再次插入它们并且表被锁定直到提交事务的时间。在每个批次中记录活动时分解成较小的部分将有所帮助。
更好的选择是将BCP插入到目标中,同时处理许多行甚至是SSIS包来执行此操作。
答案 1 :(得分:1)
没有这样的限制。与您可能认为的相反,SQLite将挂起的事务写入数据库文件,而不是RAM。因此,您不应对可以在事务下编写的数据量设置任何限制。
有关这些信息,请参阅SQLite文档:http://sqlite.org/docs.html
请点击“SQLite限制”链接,了解这些实施限制。
请点击“SQLite如何实施原子提交”链接,了解交易的工作方式