首页/数据/SQL 速查/autocommit 行为差异
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条
变更与事务52 条
性能与执行计划72 条

autocommit 行为差异

MySQL 默认 autocommit=1(每条语句自动提交);PostgreSQL 没有该开关,天然“每条语句一个隐式事务”,除非显式 BEGIN。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT @@autocommit;      -- 1
SET autocommit = 0;       -- 关闭:后续语句进入同一事务,需显式 COMMIT
SET autocommit = 1;       -- 恢复

PostgreSQL

PostgreSQL
SHOW transaction_isolation;
BEGIN;
-- 显式事务块
COMMIT;
MySQLautocommit=0 后忘 COMMIT:连接归还连接池时未提交数据丢失/长期持锁
PostgreSQL无 autocommit 变量;每条独立语句自动提交,BEGIN 后才成事务
连接池归还连接前确保事务已提交或回滚

易错点

  • 会话级 autocommit=0 与连接池复用时,未提交事务会一直挂着(持锁+undo 膨胀),排查时要看连接状态
  • MySQL 里 DDL 会隐式提交当前事务,autocommit=0 也不能保护 DDL 前后的语句

数据来源与参考

  • MySQL 8.0 Reference Manual · Server System Variables
  • PostgreSQL Documentation · Transactions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌