事务

我们先看一个例子:

例如:转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:

  1. 将A账户的金额减少100元
  2. 将B账户的金额增加100元。

在这个过程中可能会出现以下问题:

  1. 转账操作的第一步执行成功,A账户上的钱减少了100元,但是第二步执行失败或者未执行便发生系统崩溃,导致B账户并没有相应增加100元。
  2. 转账操作刚完成就发生系统崩溃,系统重启恢复时丢失了崩溃前的转账记录。
  3. 同时又另一个用户转账给B账户,由于同时对B账户进行操作,导致B账户金额出现异常。

数据库为了解决这类为题引入“事务”。

定义:

数据库事务是构成单一逻辑工作单元的操作集合。(就是保证一系列连贯的操作,必须同时成功,有一个失败判定失败)

事务4大特点

原子性:事务里边的操作就和原子一样是不可分割的
一致性:事务执行前后是从一个一致性状态到另一个一致性状态(如转账,完成前后总量不变)
隔离性:并发执行的事务不会相互影响
持久性:事务一旦提交,其对数据库的更新就是持久的。任何事务或系统故障都不会导致数据丢失。

【注】 隔离性有隔离等级,等级不同,隔离效果不同

MYSQL 事务处理主要有两种方法:

  1. 用 BEGIN, ROLLBACK, COMMIT来实现
    BEGIN 开始一个事务
    ROLLBACK 事务回滚
    COMMIT 事务确认
  2. 直接用 SET 来改变 MySQL 的自动提交模式:
    SET AUTOCOMMIT=0 禁止自动提交
    SET AUTOCOMMIT=1 开启自动提交

这里引用大神的总结,我这就不献丑。值得学习->事务详解

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