zoukankan      html  css  js  c++  java
  • mysql 事务四要素杂谈

    事务四要素

        对于数据库来说,并发性和准确性是数据库需要权衡的两个点。
    
        类似于我们的应用系统,又要要性能还要要准确。
    
        数据准确性这一条来说,最好的控制就是串行化,都别急,一个一个来。这样数据就没问题了。
    
        然而就是这个 “都别急” 让大家很急,我们又想要并发,现在这环境你不谈并发都不好意思拿出手。
    
        好了,那么并发和数据准确性怎么平衡。要并发我们所能想到的就是在必要的时候加锁,
    
        加各种层级各种范围不一样的锁。加锁这个操作其实就是在平衡我们刚才的那两点。
    
        这里不谈数据库的锁机制,我们先来谈谈 事务ACID 中的隔离性— 事务隔离级别
    
        那你会问,这是个什么?为什么要有隔离性,我不隔离不行么?
    
        说到这呢,我们就要简单再说说事务,事务我估计大家耳熟能详,但是这里你们最好再听我唠叨一下,看我说的对不对。
    
        (敲黑板,划重点)事务就是一个执行单元,一个具有原子性的执行单元。
    
        我觉得还是有必要再说说或者总结一下事务四要素
    

    原子性

        这个也很好理解,这个事务就是一个原子单元,要么执行成功,要么执行失败,中间不能有断层。
    
        类似于多线程同时操作一个变量,你告诉操作系统,我在这原子操作变量呢,你别进行线程切换(时间片切换),等我执行完,你再随意~
    

    一致性

        数据库总是从一个一致性的状态转换到另一个一致性的状态。
    
        我的理解是最终一致性也就是CAP理论的C.
    
        一开始我总觉得这个一致性和原子性的定义是一个东西(我现在也隐约有这样一种感觉)
    
        我还是尝试着总结区分他们的不同。
    
        比如说原子性:我一条语句执行失败了要回滚。
    
        比如说一致性:我执行到中间停电了,数据库崩溃了,我们可以维持正确的状态。
    
        原子性更像是—过程,我注重的是过程
    
        一致性更像是—结果,我不管过程怎样,我只是用我的KPI来考量你~
    

    再说隔离性

        其实这篇文章我想写隔离性,但是写隔离性我想从事务这四要素进行引申,写到这我发现我跑题了。我去改改标题。
    
        我没有写具体的事务隔离性,我现在正在事务四要素这捆着呢。
    
        那就说说隔离性,我第一次看到隔离性这个定义,脑子第一反应就是隔离性这个概念将每个事务化作程了管道,
    
        每条管道留着属于自己的信息,互相是不知道存在的。
    
        后来发现隔离性能是有隔离级别的,因为业务场景不尽相同,需要不同的隔离级别。
    
        类似于,我一个操作操作的数据因不应该让其他事务看到我修改的数据?—需要,因为有的场景需要这样的可见性
    
        我总将事物的隔离性总结为事物的可见性,这个可见性包括什么可以看?什么时候看?
    
        这些问题我打算下次再总结。我们这里不细讨论。
    

    持久性

        呀,这个要素让我很是想不到,因为太熟悉了,熟悉的得都会想不起它。
    
        怎么才算是持久性呢?定义是:一旦事务提交,其所做的修改将会永久保存到数据库中。
    
        这个定义是模糊的,需要加入很多策略来保证数据的持久性。
    
        比如:我就是在事务提交时,系统挂掉了,你怎么来保证数据的持久性。
    

    总结一下,事务四要素,不但要知道名字最好理解一下,有些东西就怕细细琢磨~

  • 相关阅读:
    java 在线网络考试系统源码 springboot mybaits vue.js 前后分离跨域
    springboot 整合flowable 项目源码 mybiats vue.js 前后分离 跨域
    flowable Springboot vue.js 前后分离 跨域 有代码生成器 工作流
    Flowable 工作流 Springboot vue.js 前后分离 跨域 有代码生成器
    java 企业 网站源码 后台 springmvc SSM 前台 静态化 代码生成器
    java 进销存 商户管理 系统 管理 库存管理 销售报表springmvc SSM项目
    基于FPGA的电子计算器设计(中)
    基于FPGA的电子计算器设计(上)
    FPGA零基础学习:SPI 协议驱动设计
    Signal tap 逻辑分析仪使用教程
  • 原文地址:https://www.cnblogs.com/sunchong/p/11136075.html
Copyright © 2011-2022 走看看