初探MySQL事务

56 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

学习流程

graph TD
MySQL事务处理的基本概念 --> MySQL事务处理的生命周期 --> MySQL事务处理的自动提交

MySQL事务处理的基本概念

定义

事务(Transaction):作为一个单独单元的一个或则多个SQL语句组成。 这个单元中的每个SQL语句是相互依赖的,而且单元作为一个整体是不可分割的。 如果单元中的一个语句不能成功地完成,整个单元酒会回滚, 所有影响到的数据库将返回事务开始以前的状态。 因此,只有事务中所有语句都被成功地执行才能说这个事务被成功的执行。

事务 ACID 属性

原子性(Atomicity)

原子性意味着每个事务都必须被认为是一个不可分割的单元。

一致性(Consistency)

不管事务是完全成功完成海试中途失败,当事务使系统处于一致的状态时存在一致性。

隔离性(Isolation)

一个事务内部的操作及使用的数据对并发的其他事务是隔离的。 就是是指每个事务在它自己的空间发生,和其他发生在系统中的事务隔离,而且事务的结果只有在它完全被执行时才能看到。

脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据

Repeatable read事务隔离级别可避免脏读

持久性(Durability)

持久性是指即使系统奔溃,一个提交的事务仍然在坚持。 如果一个事务提交成功,结果一直在数据库理,保存在磁盘上了。

MySQL事务处理的生命周期

存储引擎

show engines

InnoDB


# 开始事务
start transaction ; -- begin;begin work
# 巴拉巴啦事务语句
# 结束事务
commit;
#事务执行失败,并做相应的回退动作
-- rollback

MySQL事务处理的自动提交

image.png

注意: jdbc的事务必须在一个数据库连接上完成。编程时必须去掉数据库的自动提交功能。当成功后调用commit,当失败后调用rollback。