美文网首页
关于Mysql事物

关于Mysql事物

作者: 简辣椒 | 来源:发表于2019-03-23 21:53 被阅读0次
什么是事物(transaction)?

事务是一条或多条DML数据库操作语句的集合,在事务中的操作,要么都执行,要么都不执行。

为什么要使用事物呢?

比如说:用户A给用户B转账5000元主要步骤可以概括为以下几步:
检测A账户余额 > 5000元
A账户余额减去 5000元
B账户余额增加 5000元
这几步要么都成功,要么一个都不成功,否则都会导致数据不一致(5000元不翼而飞)。这就可以用到事务来保证.

Mysql支持事物吗?

Mysql有多个存储引擎,5.5版本以上默认是使用InnoDB作为存储引擎,通过下图可以发现Mysql在不改变存储引擎的情况下是支持事物的。
点击查看Mysql多个存储引擎的不同

可以通过在Mysql在命令行执行 show engines; 命令查看所有的存储引擎
事物的四大特性(ACID)
  1. 原子性(Atomicity),事务是最小单元,不可再分。
  2. 一致性(Consistency),事务要求所有的DML语句操作的时候,必须保证同时成功或同时失败。
  3. 隔离性(Isolation),一个事务不会影响其他事务的执行。
  4. 持久性(Durability),在事务完成之后,该事务对数据库所作的更改将持久地保存在数据库中,并不会被回滚。
事物的隔离级别
  • read uncommitted 读未提交
    事务A和事务B,事务A未提交的数据,事务B可以读取,这里读取到的数据叫做“脏数据”,该级别最低,一般只是理论上存在,数据库的默认隔离级别都高于该级别。
  • read committed 读已提交
    事务A和事务B,事务A提交的数据,事务B才可读取到,换句话说:对方事务提交之后的数据,当前事务才可读取到,可以避免读取“脏数据”,但是该级别会有“不可重复读”的问题,事务B读取一条数据,当事务A修改这条数据并提交后,事务B再读取这条数据时,数据发生了变化,即事务B每次读取的数据有可能不一致,这种情况叫做“不可重复读”。
  • repeatable read 重复读
    MySQL默认的隔离级别是重复读,该级别可以达到“重复读”的效果,但是会有“幻读”的问题,即事务A读取数据,此时事务B修改了这条数据,但是事务A读取的还是之前的旧数据的内容,这样就出现了幻读。
  • serializable 串行化
    事务A和事务B,事务A在操作数据库表中数据的时候,事务B只能排队等待,这样保证了同一个时间点上只有一个事务操作数据库,该级别可以解决“幻读”的问题。但是这种级别一般很少使用,因为吞吐量太低,用户体验不好。

相关文章

  • 关于Mysql事物

    什么是事物(transaction)? 事务是一条或多条DML数据库操作语句的集合,在事务中的操作,要么都执行,要...

  • MySql事物

    在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。 一般来说,事务是必须满足4个条件(...

  • mysql事物

    1、一天sql语句就是一条事物默认开启默认提交2、可以显示的开启事务、回滚事物、提交事务2.1、开启事务 star...

  • mysql 事物

    来源:转载 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用...

  • MYSQL 事物

    前言 这篇文章主要是讲解 MYSQL 事物相关知识。 什么是 MYSQL ? MySQL 是一个关系型数据库管理系...

  • Mysql事物

    事务的特点: //ACID 不考虑隔离性, 有可能出现以下问题 考虑隔离性:

  • 关于MySql中的事物隔离级别

    read uncommitted (未提交读) 级别 事务中的修改,即使没有提交,对其他事物也都是可见的。事务可以...

  • MySQL--事物

    MySQL 事物 扁平事物是最简单的一类事物,也是使用的最多的一类事物。 事物由begin开始,由commit或者...

  • mysql事物属性

    事物 一、事务四大属性 分别是原子性、一致性、隔离性、持久性。 1、原子性(Atomicity) 原子性是指事务包...

  • 事物

    MySQL本地事物 实验环境:mysql8.0 事物的四大特性:ACID,原子性,一直性,隔离性,持久性 查看默认...

网友评论

      本文标题:关于Mysql事物

      本文链接:https://www.haomeiwen.com/subject/zxdhvqtx.html