• mysql 事务四要素杂谈


    事务四要素

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

    原子性

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

    一致性

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

    再说隔离性

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

    持久性

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

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

  • 相关阅读:
    树莓派上使用docker部署aria2,minidlna
    在Ubuntu上部署一个基于webrtc的多人视频聊天服务
    解决.net core3.1使用docker部署在Ubuntu上连接sqlserver报error:35的问题
    .Net Core in Docker
    .Net Core in Docker
    SQL Server in Docker
    使用Docker运行SQL Server
    Spring Boot 2.x(四):整合Mybatis的四种方式
    Spring Boot 2.x (一):HelloWorld
    yarn (npm) 切换设置镜像源
  • 原文地址:https://www.cnblogs.com/sunchong/p/11136075.html
Copyright © 2020-2023  润新知