自己建的网站打开的特别慢,柬埔寨网赌网站开发,小店网站制作,wordpress 局域网 显示不全PostgreSQL如何关闭自动commit
在 PostgreSQL 中#xff0c;默认情况下#xff0c;每个 SQL 语句都会自动提交#xff08;即 AUTOCOMMIT 是开启的#xff09;。如果希望关闭自动提交#xff0c;以便手动控制事务的提交和回滚#xff0c;可以通过以下方法实现。
1 使用 …PostgreSQL如何关闭自动commit
在 PostgreSQL 中默认情况下每个 SQL 语句都会自动提交即 AUTOCOMMIT 是开启的。如果希望关闭自动提交以便手动控制事务的提交和回滚可以通过以下方法实现。
1 使用 BEGIN 或 START TRANSACTION 手动控制事务
在 PostgreSQL 中可以通过显式地使用 BEGIN 或 START TRANSACTION 来开启一个事务块。在事务块中所有的修改操作如 INSERT、UPDATE、DELETE都不会自动提交直到显式地执行 COMMIT 或 ROLLBACK。示例
white# \d yewu1.test10Table yewu1.test10Column | Type | Collation | Nullable | Default
-------------------------------------------------------------id | integer | | | name | character varying(20) | | | white# begin;
BEGIN
white*# insert into yewu1.test10 values(1,haha1);
INSERT 0 1
white*# commit;
COMMITwhite# --如果不执行begin再执行commit的话会提示已无事务
white#
white# insert into yewu1.test10 values(2,haha2);
INSERT 0 1
white# commit;
WARNING: there is no transaction in progress
COMMIT在 BEGIN 和 COMMIT 之间的所有操作都属于同一个事务。 如果在事务中发生错误或显式执行 ROLLBACK所有修改都会被撤销。
2 使用 SET AUTOCOMMIT 关闭自动提交
在 PostgreSQL 的某些客户端工具如 psql中可以通过 SET AUTOCOMMIT 命令关闭自动提交。在 psql 中关闭自动提交
启动 psql 并连接到数据库。
执行以下命令关闭自动提交\set AUTOCOMMIT off示例
white# \set AUTOCOMMIT off
white# insert into yewu1.test10 values(4,haha4);
INSERT 0 1
white*# commit;
COMMIT
white#
关闭 AUTOCOMMIT 后每个 SQL 语句都需要显式地提交或回滚。3 注意事项
事务隔离级别在手动控制事务时注意事务的隔离级别如 READ COMMITTED、REPEATABLE READ 等以确保数据一致性。
锁争用长时间未提交的事务可能会导致锁争用影响其他会话的性能。
资源占用未提交的事务会占用数据库资源直到提交或回滚。