事务

我们先看一个例子:

例如:转账是生活中常见的操作,比如从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 开启自动提交

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、(了解)定义 全称(Transaction Control Language)翻译成中文 事务控制语言,事务是...
    唯老阅读 665评论 0 2
  • 一、事务概述 我们可以将事务理解为一组sql语句的集合。事务可以只包含一条sql,也可以包含多条sql,事务中所有...
    国球乒乓阅读 379评论 0 0
  • 提到事务,你肯定并不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转100元...
    allen成阅读 557评论 0 0
  • 本文约5000字,建议阅读时间10分钟 关于数据库的事务,相信每个码农都有接触,也相信都遇到过与之相关的坑。本文旨...
    错乱的三元运算阅读 965评论 0 5
  • 1、概述   事务是数据库区别于文件系统的重要特征之一,其用于保证数据库的完整性,事务能使批量的SQL语句要么完全...
    黒猫阅读 770评论 0 2