🗒️Day81【概念解析】Autocommit, Commit, and Rollback
00 分钟
2023-12-11
2023-12-11
type
status
date
slug
summary
tags
category
icon
password

整理定义

autocommit(自动提交)
autocommit模式是数据库系统的一个设置,当这个设置被启用时,每个SQL语句都会被视为一个独立的事务,并且在执行后立即被提交。这意味着,如果你执行了一个INSERTUPDATEDELETE语句,该操作会立即生效,数据被永久写入数据库,无需显式调用COMMIT命令。
autocommit模式关闭的情况下,你需要显式地开始一个事务,并用COMMITROLLBACK语句结束它。这允许你执行多个操作作为一个单一的事务单元,要么全部成功,要么在遇到错误时全部回滚。
Commit(提交)
COMMIT命令用于结束一个事务,并将自事务开始以来进行的所有修改永久保存到数据库中。当你执行COMMIT时,所有自上一个COMMITROLLBACK以来的更改都会成为数据库的一部分。如果数据库系统崩溃或发生故障,已经提交的事务保证不会丢失,这是由数据库的持久性特性所保证的。
Rollback(回滚)
ROLLBACK命令与COMMIT相反,它用于撤销一个事务中的所有操作。如果在执行一系列操作时遇到错误,或者你决定出于某种原因不希望更改生效,可以使用ROLLBACK命令。执行ROLLBACK后,自上一个COMMITROLLBACK以来的所有更改都将被撤销,数据库状态回到事务开始时的状态。

复述展开

  1. InnoDB事务模型:在InnoDB存储引擎中,所有用户活动都是在事务中进行的。如果启用了autocommit模式,每个SQL语句都会自动成为一个单独的事务。
  1. autocommit模式:默认情况下,MySQL在每个新连接的会话中启用autocommit。这意味着,如果SQL语句执行成功,MySQL会在每个语句之后自动进行提交(COMMIT)。如果语句执行出错,是否提交或回滚取决于具体的错误类型。
  1. 显式事务:即使在autocommit模式启用的情况下,也可以通过显式地使用START TRANSACTIONBEGIN开始一个事务,并使用COMMITROLLBACK来结束它,从而执行多条语句的事务。
  1. 禁用autocommit模式:在会话中通过SET autocommit = 0禁用autocommit模式后,该会话将始终保持一个开放的事务。使用COMMITROLLBACK可以结束当前事务,并自动开始一个新的事务。
  1. 会话结束时的事务处理:如果autocommit模式被禁用,并且会话在没有显式提交最后一个事务的情况下结束,MySQL将回滚该事务。
  1. 隐式提交:某些语句执行时会隐式地结束当前事务,就好像在执行该语句之前进行了COMMIT一样。
  1. COMMIT与ROLLBACKCOMMIT操作会使当前事务中的所有更改变为永久性,并且这些更改对其他会话可见。而ROLLBACK操作则取消当前事务中的所有修改。无论是COMMIT还是ROLLBACK,都会释放当前事务中设置的所有InnoDB锁。

语句模板

这些语句提供对事务使用的控制:
  • START TRANSACTION 或 BEGIN 启动新事务。
  • COMMIT 提交当前事务,使其更改永久化。
  • ROLLBACK 回滚当前事务,取消其更改。
  • SET autocommit 禁用或启用当前会话的默认自动提交模式。
默认情况下,MySQL 运行时启用自动提交模式。 这意味着,当不在事务内部时,每个语句都是原子的,就好像它被 START TRANSACTION 和 COMMIT 包围一样。 您不能使用 ROLLBACK 来撤消效果; 但是,如果在语句执行期间发生错误,则该语句将回滚。

理解体会

通过对上述的学习,可以体会到了事务对于数据库操作的重要性,它们是保证数据完整性和一致性的关键。同时,了解autocommit模式的工作原理对于编写高效且安全的数据库交互代码至关重要。正确地管理事务可以避免数据丢失和脏读,也可以在出现错误时恢复到一致的状态。

参考

📌
快速跳转链接
【概念解析】启动
【概念解析】Day 1 - 10
【概念解析】Day 11 - 20
【概念解析】Day 21 - 30
【概念解析】Day 31 - 40
【概念解析】Day 41 - 50
【概念解析】Day 51 - 60
【概念解析】Day 61 - 70
【概念解析】Day 71 - 80
【概念解析】Day 81 - 90
 
上一篇
Day82 【概念解析】Consistent Read
下一篇
Day80【概念解析】 DML,DDL,DCL

评论
Loading...