mysql 事务四要素杂谈

事务四要素

对于数据库来讲,并发性和准确性是数据库须要权衡的两个点。

    相似于咱们的应用系统,又要要性能还要要准确。

    数据准确性这一条来讲,最好的控制就是串行化,都别急,一个一个来。这样数据就没问题了。

    然而就是这个 “都别急” 让你们很急,咱们又想要并发,如今这环境你不谈并发都很差意思拿出手。

    好了,那么并发和数据准确性怎么平衡。要并发咱们所能想到的就是在必要的时候加锁,

    加各类层级各类范围不同的锁。加锁这个操做其实就是在平衡咱们刚才的那两点。

    这里不谈数据库的锁机制,咱们先来谈谈 事务ACID 中的隔离性— 事务隔离级别

    那你会问,这是个什么?为何要有隔离性,我不隔离不行么?

    说到这呢,咱们就要简单再说说事务,事务我估计你们耳熟能详,可是这里大家最好再听我唠叨一下,看我说的对不对。

    (敲黑板,划重点)事务就是一个执行单元,一个具备原子性的执行单元。

    我以为仍是有必要再说说或者总结一下事务四要素

原子性

这个也很好理解,这个事务就是一个原子单元,要么执行成功,要么执行失败,中间不能有断层。

    相似于多线程同时操做一个变量,你告诉操做系统,我在这原子操做变量呢,你别进行线程切换(时间片切换),等我执行完,你再随意~

一致性

数据库老是从一个一致性的状态转换到另外一个一致性的状态。

    个人理解是最终一致性也就是CAP理论的C.

    一开始我总以为这个一致性和原子性的定义是一个东西(我如今也隐约有这样一种感受)

    我仍是尝试着总结区分他们的不一样。

    好比说原子性:我一条语句执行失败了要回滚。

    好比说一致性:我执行到中间停电了,数据库崩溃了,咱们能够维持正确的状态。

    原子性更像是—过程,我注重的是过程

    一致性更像是—结果,我无论过程怎样,我只是用个人KPI来考量你~

再说隔离性

其实这篇文章我想写隔离性,可是写隔离性我想从事务这四要素进行引伸,写到这我发现我跑题了。我去改改标题。

    我没有写具体的事务隔离性,我如今正在事务四要素这捆着呢。

    那就说说隔离性,我第一次看到隔离性这个定义,脑子第一反应就是隔离性这个概念将每一个事务化做程了管道,

    每条管道留着属于本身的信息,互相是不知道存在的。

    后来发现隔离性能是有隔离级别的,由于业务场景不尽相同,须要不一样的隔离级别。

    相似于,我一个操做操做的数据因不该该让其余事务看到我修改的数据?—须要,由于有的场景须要这样的可见性

    我总将事物的隔离性总结为事物的可见性,这个可见性包括什么能够看?何时看?

    这些问题我打算下次再总结。咱们这里不细讨论。

持久性

呀,这个要素让我非常想不到,由于太熟悉了,熟悉的得都会想不起它。

    怎么才算是持久性呢?定义是:一旦事务提交,其所作的修改将会永久保存到数据库中。

    这个定义是模糊的,须要加入不少策略来保证数据的持久性。

    好比:我就是在事务提交时,系统挂掉了,你怎么来保证数据的持久性。

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

相关文章
相关标签/搜索