MySQL——事务

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

相关SQL命令

  • 开始事务
    START TRANSACTION;
  • 提交事务
    COMMIT;
  • 回滚事务
    ROLLBACK;
  • 查看当前事务隔离级别
    select @@tx_isolation;
  • 修改当前隔离级别
    SET session TRANSACTION ISOLATION LEVEL (隔离级别);

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。

你可能感兴趣的:(MySQL——事务)