我在我的应用程序中有一个实用程序,我需要执行INSERT,UPDATE和DELETE操作的批量加载.我正在尝试围绕此创建事务,以便一旦调用此系统并将数据提供给它,就可以确保将全部或全部添加到数据库中.
关注的是这里的边界条件是什么?在一次交易中我可以拥有多少INSERT,UPDATE和DELETE?交易规模是否可配置?
任何帮助,将不胜感激.
-谢谢
单个事务可以在其中运行大约20亿个命令(2 ^ 31,减去IIRC的一小部分开销.实际上,想到它,可能是2 ^ 32 - 我认为命令计数器是无符号的).
当然,这些命令中的每一个都可以修改多行.
我不认为在交易中可以执行的工作量最大.数据不断添加到表文件中,最终事务提交或回滚:AIUI此结果存储在pg_clog中; 如果它回滚,空间最终将被真空回收.因此,就好像正在进行的事务工作保存在内存中并在提交时刷新.
对于我正在进行的项目,我执行了2000万次INSERT.我尝试了一次大型交易,并且每百万次INSERT进行一次交易,性能看起来完全相同.
PostgreSQL 8.3