重新整理 mysql 基础篇————— mysql 事务[三]
前言
简单整理一下事务。
正文
事务有四大特性:
1.原子性(atomicity)
一个事务必须被视为一个不可分割的最小单元。
2.一致性(consistency)
数据库总是从一个一致性的状态转换到另一个一致性的状态。
很多人对事务的一致性和原子性可能会有偏差。要理解这个东西呢,首先要抛开mysql,或者我们常见的数据库sql server,mongodb。
单纯来理解数据库的事务。
假如有两个事务,事务a和事务b。
假设A和B的两个账号,a账户是500块,b账户是300块。
里面有一个限制就是A账号不能大于600块。
事务a 的逻辑是给A增加100块。然后给B减少100块。
事务b 的逻辑是给B减少100块。然后给A增加100块。
现在事务a,开始执行,做好备份做回滚(500,300),然后给A增加了100块,A现在是600。
现在事务b,开始执行,做好备份做回滚(600,300),然后给B减少了100块,现在B是200。
现在事务a开始执行,给B减少100,B变成了100。也急速说b事务提交的是(600,100)
现在b开始执行,但是报错了,遇到了A不能高于600的限制,现在开始回滚,那么回滚为(600,300)。
那么这个时候就变成了(600,300)了。那么请问事务a和事务b 是否符合原子性?
首先分析事务a,现在能做的,全部执行了。那么是符合原子性的。
然后分析事务b,的确是回滚了,也是符合原子性的。
这有疑问吗?没有吧。
那么事务a和事务b是否符合一致性呢?
a是否符合一致性呢? 数据库总是从一个一致性的状态转换到另一个一致性的状态。
一致性的要求是B账户减少100块,A账户多出100块了。这是一致性的要求。
数据库一开始是:(500,300),然后a提交的时候(600,100),这显然不符合。
b事务其实是符合一致性的,一开始是(500,300),回滚也是(500,300),这没错。
那么是否一致性就一定要原子性呢?
a=a+1;
try{
b=b-1
}catch{
a=a-1;
}
这样其实也是可以一致性的。
那么数据库为什么不这么干呢?比如说 update test set a=a-1;
这个时候回滚的时候还得给你生成一个update test set a=a+1。这是简单的,如果是复杂的,这是要数据库称为人工智能吗?数据库都会傻掉的。
要实现一致性,原子性的成本应该是最低的,但是单单原子性是不能实现一致性的。
3.隔离性
上面我们知道单单原子性是没有实现一致性。那么隔离性就是在原子性的基础上增加一些,一些限制条件那么就可以实现一致性。
比如说,每个事务只能串行执行,这个时候也说符合的,这也是一种隔离级别。但是如果是串行,就不满足并发了,所以就有其他隔离级别了,或者说其他隔离方式。
- 持久性
一旦事务提交,则其所做的修改就会永久保存到数据库中。可能有人说这不是废话吗?事务做的修改不就是要保持带数据文件中,能够持久化吗?
这里面的持久性,表示的更多的是一种方案。持久化是有很多方式的,怎么确保你的持久化方案可行呢?比如说一个事务要修改4条语句分别在四张表,那么怎么确保这四条语句能够全部写入进去呢?会不会写到第二条的时候系统崩溃呢?
如果出现上面的问题,该怎么处理?这就是持久性的重要性了。前三个都是强调语句执行,最后一个强调存储。
结
以上只是个人整理,如有错误,望请指点。
下一节,事务的隔离。
重新整理 mysql 基础篇————— mysql 事务[三]的更多相关文章
- mysql基础篇-----mysql简介
2017-04-19 一.mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 ...
- [MySQL实战-Mysql基础篇]-mysql架构
1.基本组成 下面是mysql的基本架构示意图 图一 图二 我们可以从图上看出,mysql大体分为两个部分,一个是server层,另一个是引擎层. server层中包含了连接器.查询缓存.分析器.优 ...
- [MySQL实战-Mysql基础篇]-mysql的日志
参考文章: https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html https://dev.mysql.com/doc/ ...
- 重新整理 mysql 基础篇————— 介绍mysql[一]
前言 准备整理mysql的基础篇了,前面整理了sql语句序列的的<sql 语句系列(八百章)>,感觉很多用不上,就停下来了,后续还是会继续整理. mysql 基础篇主要是对一些基础进行整理 ...
- 【目录】mysql 基础篇系列
随笔分类 - mysql 基础篇系列 mysql 开发基础系列22 SQL Model(带迁移事项) 摘要: 一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql m ...
- (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb)
(3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb) 关键词:mysql日志文件,mysqldumpslow分析工具 目录:日志文件的分类 1. ...
- 前端总结·基础篇·CSS(三)补充
前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 目录 一.移动端 1.1 视口(viewport) 1.2 媒体查询(medi ...
- 前端总结·基础篇·JS(三)arguments、callee、call、apply、bind及函数封装和构造函数
前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...
- (3.16)mysql基础深入——mysql字符集
(3.16)mysql基础深入——mysql字符集 关键字:mysql字符集,mysql编码 目录 1.概念 2.常用的字符编码 3.查看mysql字符集 [3.1]查看服务器支持的字符集 [3.2] ...
随机推荐
- JSON对象与字符串的互换——JSON.parse()和JSON.stringify()
parse用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":&qu ...
- 0803-PyTorch的Debug指南
0803-PyTorch的Debug指南 目录 一.ipdb 介绍 二.ipdb 的使用 三.在 PyTorch 中 Debug 四. 通过PyTorch实现项目中容易遇到的问题 五.第八章总结 py ...
- [BUUCTF-Pwn]hitcontraining_uaf
[BUUCTF-Pwn]hitcontraining_uaf 以此题作为对Pwn中堆利用的学习的开始.堆题初见,肯定有许多地方理解不恰当,希望师傅们能多多指教. 0x00.简述 成因 应用程序调用fr ...
- 注解配置定时器Scheduling
注解配置定时器配置 package com.demo; import org.springframework.context.annotation.Configuration; import org. ...
- Redis内存——内存消耗(内存都去哪了?)
最新:Redis内存--三个重要的缓冲区 最新:Redis内存--内存消耗(内存都去哪了?) 最新:Redis持久化--如何选择合适的持久化方式 最新:Redis持久化--AOF日志 更多文章... ...
- Flink使用二次聚合实现TopN计算
一.背景说明: 有需求需要对数据进行统计,要求每隔5分钟输出最近1小时内点击量最多的前N个商品,数据格式预览如下: 543462,1715,1464116,pv,1511658000 662867,2 ...
- 【SecureCRT配置】修改默认卷屏行数当做一个操作,屏幕输出有上百行,当需要将屏幕回翻时,这个设置会有很大帮助,默认为500行,可以改为10000行,不用担心找不到了。 选项 => 全局选项 => Default Session => Edit Default Settings => Terminal => Emulation => Scrollback 修改为32000。
SecureCRT配置屏幕内容输出到log文件 SecureCRT看不到前几分钟操作的内容,或者想把通过vi命令查看的日志输出到log文件(在懒得下载日志文件的情况下),所以接下来就这样操作: 文件保 ...
- sed 's/AA/BB/' file # 将文件中的AA替换成BB,只替换一行中第一次出现的AA,替换后的结果输出到屏幕 sed 's/AA/BB/g' file # 将文件中的所有AA都替换成BB,替换后的结果输出到屏幕
生信人的自我修养:Linux命令速查手册 简佐义 四川大学 生物信息学硕士 科学求真 赢 10 万奖金 · 院士面对面 209 人赞同了该文章 许多人做生物信息学,要么不重视Linux,要么不知道 ...
- Win7通过cmd进入d盘的方法
Win7通过cmd进入d盘的方法 时间:2016-05-13 15:06:03 作者:yunchun 来源:系统之家 手机查看 评论 我们在使用Win7系统过程中,对于经常使用DOS程序的朋友们来说 ...
- 【转载】有图 KVM折腾记..
KVM折腾记...https://lengjibo.github.io/KVM%E6%8A%98%E8%85%BE%E8%AE%B0/ Veröffentlicht am 2018-09-20 | ...