事务

事务

1.什么是事务?

一个事务是一个完整的业务逻辑单元,不可再分。
如:银行账户转账,需执行两条update语句,必须同时成功或同时失败。

事务可以保证多个操作原子性,要么全成功,要么全失败。对于数据库来说事务保证批量的DML要么全成功,要么失败。
只有DML语句才和事务有关系(insert delete update)

2.事务原理
  • 开始事务机制
  • 执行DML语句(可理解为记录历史操作或记录到缓存,并不会修改硬盘上的数据)
  • 提交(commit)或回滚(rollback)事务(结束)
3.事务四大特性?

事务具有四个特性ACID。
a)原子性(atomicity)
整个事务中的所有操作,必须作为一个单元全部完成(或全部取消)。事务是最小的单元,不可再分
b)一致性(Consistency)
在事务开始之前或结束之后,数据库都保持一致状态。保证多条DML同时成功或同时失败
c)隔离性(Isolation)
一个事务不会影响其他事务运行
d)持久性
最终数据必须持久化到硬盘中。

事务之间的隔离性
事务隔离性存在隔离级别,理论上隔离级别包括4个:
第一级别:读未提交(read uncommited)
对方事务还未提交,当前事务可以读取到对方未提交数据。
第二级别:读已提交
对方提交之后的数据,我方可以读取到
问题是:不可重复读
第三级别:可重复度(即不能读取已提交)
这种隔离级别解决了不可重复度的问题
问题是:读到的数据是幻像
第四级别:序列化读/串行化读
解决了所有问题。
效率低,需要事务排队。

mysql数据库默认的隔离级别是可重复度。
oracle数据库默认隔离级别是读已提交

mysql事务默认情况下是自动提交的。即执行任意一条DML语句则提交一次。
如何关闭这种提交?start transaction
原文地址:https://www.cnblogs.com/tingshu/p/14851443.html