当前位置:  开发笔记 > 数据库 > 正文

PostgreSQL中的最大事务大小

如何解决《PostgreSQL中的最大事务大小》经验,为你挑选了3个好方法。

我在我的应用程序中有一个实用程序,我需要执行INSERT,UPDATE和DELETE操作的批量加载.我正在尝试围绕此创建事务,以便一旦调用此系统并将数据提供给它,就可以确保将全部或全部添加到数据库中.

关注的是这里的边界条件是什么?在一次交易中我可以拥有多少INSERT,UPDATE和DELETE?交易规模是否可配置?

任何帮助,将不胜感激.

-谢谢



1> Magnus Hagan..:

单个事务可以在其中运行大约20亿个命令(2 ^ 31,减去IIRC的一小部分开销.实际上,想到它,可能是2 ^ 32 - 我认为命令计数器是无符号的).

当然,这些命令中的每一个都可以修改多行.



2> araqnid..:

我不认为在交易中可以执行的工作量最大.数据不断添加到表文件中,最终事务提交或回滚:AIUI此结果存储在pg_clog中; 如果它回滚,空间最终将被真空回收.因此,就好像正在进行的事务工作保存在内存中并在提交时刷新.


这只是部分正确.每个事务内部都有一个命令计数器,用于处理事务内部的可见性.这是一个32位数字,如果你有一个非常大的事务(数十亿个命令),它最终会溢出.VACUUM,pg_clog等只处理系统中的事务总数,而不是其中一个事件中发生的事务.

3> bortzmeyer..:

对于我正在进行的项目,我执行了2000万次INSERT.我尝试了一次大型交易,并且每百万次INSERT进行一次交易,性能看起来完全相同.

PostgreSQL 8.3

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有