mysql 事务四要素杂谈
事务四要素
对于数据库来说,并发性和准确性是数据库需要权衡的两个点。
类似于我们的应用系统,又要要性能还要要准确。
数据准确性这一条来说,最好的控制就是串行化,都别急,一个一个来。这样数据就没问题了。
然而就是这个 “都别急” 让大家很急,我们又想要并发,现在这环境你不谈并发都不好意思拿出手。
好了,那么并发和数据准确性怎么平衡。要并发我们所能想到的就是在必要的时候加锁,
加各种层级各种范围不一样的锁。加锁这个操作其实就是在平衡我们刚才的那两点。
这里不谈数据库的锁机制,我们先来谈谈 事务ACID 中的隔离性— 事务隔离级别
那你会问,这是个什么?为什么要有隔离性,我不隔离不行么?
说到这呢,我们就要简单再说说事务,事务我估计大家耳熟能详,但是这里你们最好再听我唠叨一下,看我说的对不对。
(敲黑板,划重点)事务就是一个执行单元,一个具有原子性的执行单元。
我觉得还是有必要再说说或者总结一下事务四要素
原子性
这个也很好理解,这个事务就是一个原子单元,要么执行成功,要么执行失败,中间不能有断层。
类似于多线程同时操作一个变量,你告诉操作系统,我在这原子操作变量呢,你别进行线程切换(时间片切换),等我执行完,你再随意~
一致性
数据库总是从一个一致性的状态转换到另一个一致性的状态。
我的理解是最终一致性也就是CAP理论的C.
一开始我总觉得这个一致性和原子性的定义是一个东西(我现在也隐约有这样一种感觉)
我还是尝试着总结区分他们的不同。
比如说原子性:我一条语句执行失败了要回滚。
比如说一致性:我执行到中间停电了,数据库崩溃了,我们可以维持正确的状态。
原子性更像是—过程,我注重的是过程
一致性更像是—结果,我不管过程怎样,我只是用我的KPI来考量你~
再说隔离性
其实这篇文章我想写隔离性,但是写隔离性我想从事务这四要素进行引申,写到这我发现我跑题了。我去改改标题。
我没有写具体的事务隔离性,我现在正在事务四要素这捆着呢。
那就说说隔离性,我第一次看到隔离性这个定义,脑子第一反应就是隔离性这个概念将每个事务化作程了管道,
每条管道留着属于自己的信息,互相是不知道存在的。
后来发现隔离性能是有隔离级别的,因为业务场景不尽相同,需要不同的隔离级别。
类似于,我一个操作操作的数据因不应该让其他事务看到我修改的数据?—需要,因为有的场景需要这样的可见性
我总将事物的隔离性总结为事物的可见性,这个可见性包括什么可以看?什么时候看?
这些问题我打算下次再总结。我们这里不细讨论。
持久性
呀,这个要素让我很是想不到,因为太熟悉了,熟悉的得都会想不起它。
怎么才算是持久性呢?定义是:一旦事务提交,其所做的修改将会永久保存到数据库中。
这个定义是模糊的,需要加入很多策略来保证数据的持久性。
比如:我就是在事务提交时,系统挂掉了,你怎么来保证数据的持久性。
总结一下,事务四要素,不但要知道名字最好理解一下,有些东西就怕细细琢磨~
mysql 事务四要素杂谈的更多相关文章
- mysql事务四种隔离级别
事务的基本要素:原子性,一致性,隔离性,持久性. 事务并发问题:脏读,不可重复读,幻读. mysql隔离级别:read-uncommitted,read-committed,repeatable-re ...
- MySQL 事务与锁机制
下表展示了本人安装的MariaDB(10.1.19,MySQL的分支)所支持的所有存储引擎概况,其中支持事务的有InnoDB.SEQUENCE,另外InnoDB还支持XA事务,MyISAM不支持事务. ...
- MySQL的四种事务隔离级别
本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...
- [转载] MySQL的四种事务隔离级别
本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...
- MySQL的四种事务隔离级别【转】
本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...
- MySQL事务的四种隔离级别
事务的基本要素: 原子性(atomicity):事务开始后的全部操作, 要么全部执行成功,如果中间出现错误,事务回滚到事务开始前的状态. 一致性(Consistency):事务开始后,数据库的完整性约 ...
- MySQL系列详解四:MySQL事务-技术流ken
MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数 ...
- mysql事务、触发器、视图、存储过程、函数
存储过程: procedure 概念类似于函数,就是把一段代码封装起来, 当要执行这一段代码的时候,可以通过调用该存储过程来实现. 在封装的语句体里面,可以用if/else, case,while等控 ...
- 事务以及MySQL事务隔离级别+MySQL引擎的区别
1.事务的基本要素:ACID 1.原子性(Atomicity): 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...
随机推荐
- Win32_Processor CPU 参数说明
转载自:https://blog.csdn.net/yeyingss/article/details/49385421 AddressWidth --在32位操作系统,该值是32,在64位操作系统是 ...
- EFK的搭建(未完成)
EFK 是ELK 日志分析的一个变种,能够更好的来实现日志分析. 首先我们先准备3台 centos7的服务器,在给他们调成2核2G的状态打开. 软件 版本号 zookeeper 3.4.14 Kafk ...
- freemarker数据格式化问题(即数值超过三位后自动添加逗号问题)
实际数据:{value:1007, name:'通用设备'}, 浏览器回显数据: 得出: freemarker 当数据超过3位的时候,会自动用逗号截取 格式如:1,007 解决办法: 加?c,如:${ ...
- [ASP.NET Core 3框架揭秘] 配置[4]:将配置绑定为对象
虽然应用程序可以直接利用通过IConfigurationBuilder对象创建的IConfiguration对象来提取配置数据,但是我们更倾向于将其转换成一个POCO对象,以面向对象的方式来使用配置, ...
- 权值初始化 - Xavier和MSRA方法
设计好神经网络结构以及loss function 后,训练神经网络的步骤如下: 初始化权值参数 选择一个合适的梯度下降算法(例如:Adam,RMSprop等) 重复下面的迭代过程: 输入的正向传播 计 ...
- 人工智能技术导论——使用PROLOG逻辑语言解决爱因斯坦斑马文件
一.背景 在上一篇博客https://www.cnblogs.com/wkfvawl/p/12056951.html上,我简单介绍了一下Prolog的一些基本语法,这篇博客主要通过老师课上讲过的一个问 ...
- 1、手写Unity容器--极致简陋版Unity容器
模拟Unity容器实例化AndroidPhone 思路: 1.注册类型:把类型完整名称作为key添加到数据字典中,类型添加到数据字典的value中 2.获取实例:根据完整类型名称也就是key取出val ...
- spring boot 2 + shiro 实现权限管理
Shiro是一个功能强大且易于使用的Java安全框架,主要功能有身份验证.授权.加密和会话管理.看了网上一些文章,下面2篇文章写得不错.Springboot2.0 集成shiro权限管理 Spring ...
- 计算属性computed
computed 在Vue中有多种方法为视图设置值: 1.使用指令直接将数据值绑定到视图 2.使用简单的表达式对内容进行简单的转换 3.使用过滤器对内容进行简单的转换 除此之外,我们还可以使用计算属性 ...
- python高阶函数——sorted排序算法
python 内置的sorted()函数可以对一个list进行排序: >>> sorted([8,3,8,11,-2]) [-2, 3, 8, 8, 11] 既然说是高阶函数,那么它 ...