长时间的高额交易是否不利

如何解决长时间的高额交易是否不利

| 哈o 我正在编写一个数据库应用程序,它使用伪造的“ 0”隔离级别(“ 1”)进行大量插入和更新。 为了不进行大量网络往返,我要在一笔交易中以2英镑的价格批量插入和更新。它们很少会失败,因为插入已经过预先检查,并且几乎与其他事务没有冲突,因此回滚不会经常发生。 拥有大笔交易应该对WAL有利,因为它可以刷新大块数据,而不必为小型交易而刷新。 1.)我只能看到大笔交易的积极影响。但是我经常读到它们很糟糕。为什么在我的用例中它们不好? 2.)将“ 3”合并回真实数据库时,检查冲突是否如此昂贵?数据库将必须比较所有可能冲突的写入集(并行事务)。还是做一些高速捷径?还是便宜吗? [编辑]如果有人可以使快照隔离数据库如何检查在时间轴上具有重叠部分的事务是否被检查为分离的写集,可能会很有趣。因为这就是假的可序列化隔离级别的全部含义。     

解决方法

        真正的问题有两个方面。第一个可能的问题是膨胀。大型事务可能会导致立即显示很多死元组。另一个可能的问题是长期运行的事务。只要运行了一个长期运行的事务,就无法清理它涉及的表,因此也可以收集大量的死元组。 我想说的只是使用check_postgresql.pl检查是否有腹胀问题。只要您在长时间的交易后没有看到太多的桌子膨胀,就可以了。     ,        1)手册说它很好:http://www.postgresql.org/docs/current/interactive/populate.html 我也建议您先使用COPY,删除索引(但先进行测试),增加maintenance_work_mem,增加checkpoint_segments,然后运行ANALYZE(或VACUUM ANALYZE)。 如果您不确定,我不会推荐您:删除外键约束,禁用WAL归档和流复制。 2)始终在提交时合并数据,但是没有检查,只是写入数据。重读:http://www.postgresql.org/docs/current/interactive/transaction-iso.html 如果您的插入内容/更新不依赖于其他插入内容/更新,则不需要“完全一致的视图”。您可以使用已提交读操作,并且事务将永远不会失败。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?