事务

作者: MisAutumn | 来源:发表于2020-06-16 22:23 被阅读0次

事务是什么
事务是一系列操作,是程序的执行单元。
我们需要通过一系列手段尽量使事务满足ACID原则。

四个特性
原子性:事务中的所有操作是一个整体,要么全都执行,要么全都回滚。
一致性:事务的开始和完成都保持一致。
隔离性:事物之间是相互独立的,中间状态对外不可见
持久性:事务的修改是永久的

一致性
内部一致性:解决丢失修改,脏读、不可重复读
外部一致性

  1. 强一致性:系统中某个数据成功更新后,后序操作都将得到更新后的值。
  2. 弱一致性:不能保证强一致性
  3. 最终一致性:在一段时间后,数据会达到一致性状态。期间可能会有不同进程读取数据不一致的情况。

并发问题

  1. 脏读:A事务还未提交,B事务就读到了结果。
  2. 不可重复读:A事务操作过程中出现前后读取数据不一致或不存在的情况。(破坏一致性,update delete)
  3. 幻读:A事务操作过程中出现,第一次读取不存在,第二次读取出现了(破坏一致性,insert)

隔离级别

  1. 读未提交:只能保持持久性。行级共享锁。
  2. 读已提交:语句级别。解决脏读
  3. 可重复读:事务级别。解决不可重复读。
  4. 串行化:串行化执行,非并发,性能低。

Innodb实现隔离级别
通过读取事务时加锁和释放机制。
读未提交:读取数据加行级共享锁,读完释放。
读已提交:写数据加行级排它锁直到事务结束。
可重复读:写数据加行级排它锁直到数据结束,读数据加行级共享锁直到事务结束。
串行化:读数据时加表级共享锁知道事务结束。

参考1
参考2

相关文章

  • java事务

    1、java事务介绍 2、JDBC事务 3、JTA事务 1、java事务介绍 java事务分类:JDBC事务、...

  • 事务、MySQL与Python交互、Python 中操作 MyS

    1、事务 事务操作分两种:自动事务(默认)、手动事务 手动事务的操作流程 开启事务:start transacti...

  • 数据库事务书目录

    数据库事务 事务概念 本地事务 全局事务 全局事务的定义 J2EE中全局事务的实现 全局事务的优缺点 基于消息的分...

  • MySQL事务

    MySQL-innodb-事务 事务的特性 事务的生命周期 失败的事务: 事务的控制语句 面试题 事务日志-red...

  • mysql事务隔离机制及其隔离级别、实现原理分析

    目录 事务特性ACID属性 并发事务带来的问题 事务隔离级别 事务实现原理 事务特性ACID属性 事务特性指的就是...

  • MULE事务配置

    在mule的事务可能为jdbc事务,jms事务,xa事务等,多种事务.这里讲解事务的几个动作: 相关的文档:htt...

  • 事务—事务模型

    程序猿基础知识的学习、理解、整理——事务(方方土) 事务,看似很简单,其实很复杂,作为一个程序猿,你对事务到底了解...

  • 事务—XA事务

    程序猿基础知识的学习、理解、整理——事务(方方土) 什么是XA事务?在什么场景下会出现XA事务? @Transac...

  • 事务—事务模式

    程序猿基础知识的学习、理解、整理——事务(方方土) 什么是事务模式?这里提到的事务模式,主要是指在系统设计过程中的...

  • JDK动态代理给Spring事务埋下的坑

    service 模拟动态代理事务 测试类 预测结果模拟事务:开启事务execute doLink模拟事务:关闭事务...

网友评论

      本文标题:事务

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