MySQL事务的四大特性以及并发事务问题解读

 更新时间:2023年09月22日 16:14:54   作者:LMGD  
这篇文章主要介绍了MySQL事务的四大特性以及并发事务问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

MySQL事务的四大特性以及并发事务

事务的四大特性ACID

原子性(Atomicity):

  • 事务是不可分割的最小单元,要么全部成功,要么全部失败。
  • (eg:转账案例,转账过程中任何一步操作失败了,那么整个事务就失败了)

一致性(Consistency):

  • 事务完成时,必须使所有的数据都保持一致状态。
  • (不管是事务执行成功提交,还是事务执行失败回滚了,张三李四账户余额加起是一个恒定值。转账前总和6000,转账后不可能出现两个人的账户总和8000)

隔离性(Isolation):

  • 数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
  • (隔离性是指:有并发个事务,事务A、事务B同时操作数据库,A事务在操作的时候不会影响B事务的执行;同理B事务在操作的时候,也不会影响A事务的执行。它们两个事务在独立的环境下运行的,互不影响。)

持久性(Persistence):

  • 事务一旦提交或回滚,它对数据库中的数据改变就是永久的。
  • (不管是事务执行成功提交了,还是操作异常回滚了,它对数据库的改变时永久的,因为数据库的数据最终是存储在磁盘的,那么存储在磁盘的数据它会被永久的保留下来)

事务-并发事务问题

脏读:一个事务读到另一个事务还没有提交的数据。

不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。

幻读: 一个事务按照条件查询事务时,没有对应的数据行,但是在插入数据时,又发现这行数据已存在,好像出现了幻影。

并发事务出现的问题-图文描述:

脏读:

  • B事务读取A事务修改后(update后)未提交的数据;
  • 事务A对id=1 的数据进行了修改,且修改后还未提交事务,此时事务B查询id=1的数据,查到的数据是事务B修改后未提交的数据。这种情况称之为脏读。

不可以重复读:

  • A事务一共有4个操作,第一步时查询数据库id=1的数据,第二步执行其他操作时,此时B事务对id=1的数据进行修改(注:并发事务),修改后提交事务。
  • A事务执行第三步查询id=1的数据时,和第一步查询id=1的返回结果不一样(因为B事务对id=1的数据进行了修改),这种情况称之为不可以重复读。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL8.0设置远程访问权限的方法

    MySQL8.0设置远程访问权限的方法

    这篇文章主要介绍了MySQL8.0设置远程访问权限的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • mysql触发器简介、创建触发器及使用限制分析

    mysql触发器简介、创建触发器及使用限制分析

    这篇文章主要介绍了mysql触发器简介、创建触发器及使用限制,结合实例形式分析了mysql触发器的功能、原理、创建、用法及操作注意事项,需要的朋友可以参考下
    2019-12-12
  • mysql 动态生成测试数据

    mysql 动态生成测试数据

    mysql 动态生成测试数据的语句,方便测试数据。
    2009-08-08
  • 通过mysql-proxy完成mysql读写分离

    通过mysql-proxy完成mysql读写分离

    前不久做了下mysql读写分离的实验,也参考了很多的资料,谢谢哪些提供资料的兄弟
    2014-05-05
  • QT连接MYSQL数据库的详细步骤

    QT连接MYSQL数据库的详细步骤

    这篇文章主要介绍了QT连接MYSQL数据库的详细步骤,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • ubuntu20.04 安装 MySQL5.7过程记录

    ubuntu20.04 安装 MySQL5.7过程记录

    这篇文章主要介绍了ubuntu20.04 安装 MySQL5.7过程记录的相关资料,需要的朋友可以参考下
    2022-10-10
  • mysql分表程序改动方法

    mysql分表程序改动方法

    在本篇文章里小编给大家分享了关于mysql分表程序改动方法以及相关知识点,需要的朋友们跟着学习下。
    2019-04-04
  • MySQL索引事务详细解析

    MySQL索引事务详细解析

    这篇文章主要介绍了MySQL数据库索引事务,索引是为了加速对表中数据行的检索而创建的一种分散的存储结;事物是属于计算机中一个很广泛的概念,一般是指要做的或所做的事情,下面我们就一起进入文章了解具体内容吧
    2022-01-01
  • MySQL里面的子查询实例

    MySQL里面的子查询实例

    最近学习php+mysql执行操作,发现了这一篇实例代码
    2008-04-04
  • MySQL实现批量检查表并进行repair与optimize的方法

    MySQL实现批量检查表并进行repair与optimize的方法

    这篇文章主要介绍了MySQL实现批量检查表并进行repair与optimize的方法,结合实例形式分析了MySQL批量修复与优化表的相关技巧,需要的朋友可以参考下
    2016-04-04

最新评论