MySQL事务

MySQL事务

事务的特性

  • 原子性

    指事务包含的所有操作要么都做,要么都不做,保证数据库是一致的

    例子:甲账户向乙账户转账1000元,则先将甲账户减少1000元,再将乙账户增加1000元,这两个操作要么都提交,要么都回退,不可能发生一个有效另一个无效的情况。

  • 一致性

    指数据库中的数据在事务操作前和事务操作后必须满足业务规则约束。

    例子:事务提交之后,甲乙账户的总金额在转帐前和转账后必须一致

  • 隔离性

    指当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离

    在甲、乙之间转账时,丙同时向甲转账,若同时进行,则甲、乙之问的一致性不能得到满足。所以在甲、乙事务执行过程中,一其他事务不能访问(修改)相关的数值。

  • 持久性

    事务处理结束后,对数据的修改就是永久的,即便系统发生故障也不会丢失

truncate和delete的区别

  • truncate是DDL语句操作,delete是DML语句操作
  • truncate不能回滚,delete可以回滚
  • truncate清空表的自增id属性,从1重新开始记录,而delete不会

事务的隔离级别

  • 读未提交(read uncommitted)

    在其中一个事务中可以读取到其他事务未提交的数据变化。会导致脏读,不可重读,幻读的现象

    脏读:A事务更新了一份数据,B事务读取到了这份更新的数据并进行了一些操作,由于某些原因,A事务发生了rollback操作,则B事务读取的数据就会不正确

  • 读已提交(read committed)

    在其中一个事务中,可以读取到其他事务已经提交的数据变化。会导致不可重读,幻读的现象

    不可重读:在一个事务查询两次之中数据不一致,读取到其他已提交事务对旧数据的修改记录

  • 可重复度(repeatable read)

    在其中一个事务中,直到事务结束前,都可以反复读取到事务刚开始时看到的数据,并一直不会发生变化。会导致幻读现象

    幻读:在一个事务的两次查询中数据笔数不一致,读取到了其他已提交事务新增记录

  • 串行(serializable)

    在每个读的数据行上都需要加表级共享锁,在每次写数据时都要加表级排他锁。

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

推荐阅读更多精彩内容

  • https://www.runoob.com/mysql/mysql-transaction.html[https...
    王王王王王景阅读 21,223评论 4 23
  • 一、(了解)定义 全称(Transaction Control Language)翻译成中文 事务控制语言,事务是...
    唯老阅读 704评论 0 2
  • 一、事务概述 我们可以将事务理解为一组sql语句的集合。事务可以只包含一条sql,也可以包含多条sql,事务中所有...
    国球乒乓阅读 390评论 0 0
  • 事务处理 事务处理是数据库中的一个大块头,涉及到数据的完整性与一致性问题,由于mysql存在多种数据存储引擎提供给...
    tanghomvee阅读 766评论 0 0
  • Windows环境下 Anaconda中安装Tensorflow,并且将Tensorflow配置到jupyter ...
    mmmwhy阅读 4,243评论 2 4