gpt4 book ai didi

python - 有什么理由不使用自动提交吗?

转载 作者:行者123 更新时间:2023-12-02 00:13:44 26 4
gpt4 key购买 nike

我正在使用 pyscopg2 来管理一些 postgresql 数据库连接。

正如我所发现的 heredocs psycopg2 似乎默认模拟非自动提交模式。还有 postgresql treats every statement as a transaction ,基本上是自动提交模式。

我的疑问是,如果 psycopg 和 postgresql 都处于默认模式,会发生哪种情况?或者,如果它既不是这两者之一,又会发生什么。任何性能建议也将不胜感激。

     Code                  Psycopg2                   Postgresql

Some statements --> One big transaction --> Multiple simple transactions
or
Some statements --> One big transaction --> Big transaction

最佳答案

首先,我对这两个文档的解释是,当使用 postgresql 运行 psycopg2 时,由于 psycopg2 已启动事务,您将默认以模拟非自动提交模式运行。当然,您可以使用 autocommit=True 覆盖默认值。现在回答你的问题:

默认情况下,您不会使用 autocommit=True,这将要求您在对希望永久更新的数据库进行更新时随时提交。这可能看起来很不方便。但是在很多情况下,当您需要进行多次更新时,要么它们都必须成功,要么都不能成功。如果您指定了 autocommit=True,那么您必须为这些情况显式启动事务。使用 autocommit=False,您可以省去必须以总是必须执行提交或回滚为代价启动事务的麻烦。好像是喜好问题。我个人更喜欢 autocommit=False

就性能而言,指定 autocommit=True 会在许多情况下为您节省启动不必要事务的成本。但我无法量化实际节省了多少性能。

关于python - 有什么理由不使用自动提交吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57761557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com