【发布时间】: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