事务四要素

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

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

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

    然而就是这个 “都别急” 让大家很急,我们又想要并发,现在这环境你不谈并发都不好意思拿出手。

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

    加各种层级各种范围不一样的锁。加锁这个操作其实就是在平衡我们刚才的那两点。

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

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

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

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

    我觉得还是有必要再说说或者总结一下事务四要素

原子性

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

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

一致性

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

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

    一开始我总觉得这个一致性和原子性的定义是一个东西(我现在也隐约有这样一种感觉)

    我还是尝试着总结区分他们的不同。

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

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

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

    一致性更像是—结果,我不管过程怎样,我只是用我的KPI来考量你~

再说隔离性

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

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

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

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

    后来发现隔离性能是有隔离级别的,因为业务场景不尽相同,需要不同的隔离级别。

    类似于,我一个操作操作的数据因不应该让其他事务看到我修改的数据?—需要,因为有的场景需要这样的可见性

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

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

持久性

    呀,这个要素让我很是想不到,因为太熟悉了,熟悉的得都会想不起它。

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

    这个定义是模糊的,需要加入很多策略来保证数据的持久性。

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

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

mysql 事务四要素杂谈的更多相关文章

  1. mysql事务四种隔离级别

    事务的基本要素:原子性,一致性,隔离性,持久性. 事务并发问题:脏读,不可重复读,幻读. mysql隔离级别:read-uncommitted,read-committed,repeatable-re ...

  2. MySQL 事务与锁机制

    下表展示了本人安装的MariaDB(10.1.19,MySQL的分支)所支持的所有存储引擎概况,其中支持事务的有InnoDB.SEQUENCE,另外InnoDB还支持XA事务,MyISAM不支持事务. ...

  3. MySQL的四种事务隔离级别

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...

  4. [转载] MySQL的四种事务隔离级别

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...

  5. MySQL的四种事务隔离级别【转】

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...

  6. MySQL事务的四种隔离级别

    事务的基本要素: 原子性(atomicity):事务开始后的全部操作, 要么全部执行成功,如果中间出现错误,事务回滚到事务开始前的状态. 一致性(Consistency):事务开始后,数据库的完整性约 ...

  7. MySQL系列详解四:MySQL事务-技术流ken

    MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数 ...

  8. mysql事务、触发器、视图、存储过程、函数

    存储过程: procedure 概念类似于函数,就是把一段代码封装起来, 当要执行这一段代码的时候,可以通过调用该存储过程来实现. 在封装的语句体里面,可以用if/else, case,while等控 ...

  9. 事务以及MySQL事务隔离级别+MySQL引擎的区别

    1.事务的基本要素:ACID 1.原子性(Atomicity): 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...

随机推荐

  1. forEach()和for/in循环的缺点与for-of循环

    以数组为例,JavaScript 提供多种遍历语法.最原始的写法就是for循环. for (var index = 0; index < myArray.length; index++) { c ...

  2. ubuntu16.04修改ssh的端口

    直接修改文件   /etc/ssh/sshd_config文件,

  3. django----多对多三种创建方式 form组件

    目录 多对多三种创建方式 全自动 全手动 半自动 form组件 基本使用 form_obj 及 is_valid() 前端渲染方式 取消前端自动校验 正则校验 钩子函数(Hook方法) cleaned ...

  4. 建议3:正确处理Javascript特殊值---(1)正确使用NaN和Infinity

    NaN时IEEE 754中定义的一个特殊的数量值.他不表示一个数字,尽管下面的表达式返回的是true typeof(NaN) === 'number' //true 该值可能会在试图将非数字形式的字符 ...

  5. 中国剩余定理(CRT)及其拓展(ExCRT)

    中国剩余定理 CRT 推导 给定\(n\)个同余方程 \[ \left\{ \begin{aligned} x &\equiv a_1 \pmod{m_1} \\ x &\equiv ...

  6. Ubuntu下交换CTRL与CAPSLOCK

    1.编辑文件 keyboard sudo vim /etc/default/keyboard 2. 添加内容 XKBOPTIONS="ctrl:swapcaps" 3. reboo ...

  7. GrimTheRipper: 1 Vulnhub Walkthrough

    靶机下载: https://www.vulnhub.com/entry/grimtheripper-1,350/ 主机层面端口扫描: ╰─ nmap -p1-65535 -A 10.10.202.15 ...

  8. iOS Privacy Policy

    This application respects and protects the privacy of all users who use the service. In order to pro ...

  9. DiskCatalogMaker for Mac常见问题解答

    DiskCatalogMaker for Mac是Mac上简单实用的磁盘管理工具,可以帮助您对多张光盘使用批量扫描模式, 生成缩略图图像选项,更加清晰,并请将其快速编目引擎与其他编目人员比较,在本篇文 ...

  10. 28.web8

    file_get_contents()文件包含漏洞,根据题目提示txt?尝试flag.txt payload:  ?ac=flags&fn=flag.txt