【问题标题】:How to set autocommit off permanently postgres如何永久关闭自动提交 postgres
【发布时间】:2016-12-23 10:11:33
【问题描述】:

我有一个带有 postgres 用户的 postgres 实例。

root@f23ada822ac8:/# su - postgres
No directory, logging in with HOME=/
$ bash
postgres@f23ada822ac8:$ psql
psql (9.6.1)
Type "help" for help.

postgres=# \echo :AUTOCOMMIT
on

在 / 这是 postgres 主目录我有 .psqlrc 看起来像

postgres@f23ada822ac8:/$ cat ~/.psqlrc
\set AUTOCOMMIT off

理想情况下,这应该将自动提交设置为关闭,但不会将其关闭。我是postgres的新手。这里的任何指示都会有所帮助。我知道这不是永久的解决方案。我还读到,即使在您有事务的情况下启用了自动提交,那么无论自动提交设置是什么,它都只会在您调用 commit 时提交。这是真的吗?

【问题讨论】:

  • 为什么要关闭自动提交?这是所有数据库中的默认行为,即使是那些在 20 多年前默认关闭的数据库。长事务不利于可扩展性,更不用说因为忘记提交隐式启动的事务而偶尔丢失数据
  • cat ~/.psqlrc 不是 cat /.psqlrc - 显示最后的输出?..
  • 自动提交关闭在 20 多年前是有意义的,因为人们实际上输入了 DML 命令。不过,应用程序应该尽可能少地保持交易开放。打开的事务会消耗资源并导致阻塞,从而导致吞吐量显着降低。

标签: postgresql


【解决方案1】:

这取决于您过去与 DB 的交互方式。像 TOAD 这样的应用程序有一个可以关闭的自动提交功能,它多次保存了我的培根。那就是说。

psql 有一个启动文件 psqlrc。您可以将自动提交关闭选项添加到此文件。但是,这仅适用于 psql。

【讨论】:

  • 如果您查看问题,psqlrc 是 OP 已经尝试过的,但它不起作用。这里的第一段感觉像是对不同问题的评论或回应;答案应该是独立的(与他们正在回答的问题一起),而不是正在进行的讨论的一部分。
猜你喜欢
  • 2016-09-29
  • 2015-08-02
  • 2012-03-08
  • 2016-09-07
  • 1970-01-01
  • 2016-10-12
  • 2010-10-13
  • 1970-01-01
  • 2013-05-09
相关资源
最近更新 更多