MySQL——事务

2018-08-14  本文已影响0人  我不懂我不懂a

事务是一组原子性的SQL查询,如果数据库引擎能够成功的执行该组查询,则执行该组查询,如果其中任何一条语句因为崩溃或其它原因无法执行,那么所有的语句都不会执行。

相关SQL命令

ACID

原子性(atomicity),一致性(consistency),隔离性(isolation)和持久性(durability)。

ACID是一个良好的事务需要具备的标准。
原子性:一个事务被看做不可分割的工作单元,要么全部提交,要么失败回滚。
一致性:
隔离性:一个事务的修改在未提交前对其它事务不可见。
持久性:事务所做的修改一旦提交就会保存到数据库中。

隔离级别

由ACID原则我们知道,一个事务的修改在未提交前对其它事务不可见。

  1. 其它事务无法“看见”自己对数据的修改。
  2. 自己只能“看见”事务开始时已经提交的事务所做的修改,执行事务中其它事务提交的修改看不见。
隔离级别为read uncommitted出现脏读和不可重复读

如图,
tjc的值(num)为500
事务A(左)首先将tjc的值-50(步骤1)
事务B(右)查看tjc,值为450(此为脏读)
事务A回滚
事务B查看tjc,值为500(此为不可重复读)

脏读为在事务B中读取了事务A未提交的修改,如果事务A回滚,则B有可能执行得到错误的结果。
不可重复读是在同一事务中,两次执行同样的查询得到的结果不一样,如步骤2,4。

上一篇下一篇

猜你喜欢

热点阅读