SQL——回头看,原来“事务”在这里!!!
2年过后,实践+工作。层多次遇到和听到事务的概念。不经想起了,当初看的那本sql入门经典。再次翻看。收货巨多!今天来聊聊数据库的事务吧。
所谓不谋全局者不足谋一域,不谋万世者不足某一时。让咱先上一张导图吧。
好吧,是有点看不清的感觉。
下面是思维导图的简易版。
一:背景
- 解决数据更新带来的冲突问题。
事务四个特性
持久性
结束时,必须正确保存数据,不管出现什么特殊、意外情况断电、设备失效…… 不能只保存部分、不完整的数据 durable
* 隔离性*
正在改变、改变被提交或被应用前的数据,应得到隔离:即:其他用户不可见 事务完成,数据还在,那其他用户必须对其可见。解开隔离 isolated
一致性
不覆盖之前的更新 数据库处于确定的一致的状态 consistent
原子性
要么全部完成,要么全部失败 atomic
3什么时候不用?
在新创建的表中的,且利用新的记录初始化改表的操作不需要事务
4什么时候用?
数据库可能出现不确定状态更新丢失未确认前后读取数据不一致
二: 事务模型
1、 ANSI——sql
2、Transact——sql
三:思想
1、使用关键字:
ANSI—— sql
commit
rollback
注意:使用了隐藏的commit,默认在第一个sql语句前加上的。目的,结束上一个事务操作,是数据库处于一致状态
Transact——sql
begin transaction
savetransaction
committransaction
2、将多条sql语句,封装为一个事务
使其成为一个独立的执行单元要么全部完成,要么全部撤销
作用: 阻止、允许其他用户看到 您在特殊环境所做的数据改变
四、 常见问题(并发)处理
- 更新丢失
- 未确认
- 前后数据读取不一致:不一致数据 && 幻影插入
五、 实现
**1、使用事务日志**原理记录操作前记录操作后存储和主数据库位于不同物理驱动器问题:性能问题资源开销内存磁盘好处回滚事务操作注意:每种dbms的实现各自不同
**2、使用锁**工作方式(原理)粒度库表页行列级别共享专有死锁降低锁的影响参数化粒度数目级别超时注意:一般的dbms,有自己的锁机制。通常不需要用户来干涉带来的问题死锁处理方法版本控制(Oracle)周期性检测死锁,并随机抽取事务,进行回滚原因性能原因处理方法限制了数据的并发操作作用:确保一致性本质:限制用户的操作
**3、使用隔离级别(某些dbms支持,并不是全部)**概念数据库用户用户的事务之间事务之间被允许的相互干涉程度四个级别serializableallrepeatable read无法解决幻影插入read committed前后数据读取不一致无法解决read uncommitted仅确保解决更新丢失
六:小结
实在是很恶心,关于csdn的markdone编辑器。巨难用!操作起来两边效果不能得到自己想要的东西。好吧。是时候,转移到github上去玩了。
SQL——回头看,原来“事务”在这里!!!相关推荐
- SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因...
原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...
- SQL 实验项目8_事务控制
大三上:数据库系统概论所有实验报告和课后作业 文章目录 一.实验目的及要求 二.实验内容(或实验原理.实验拓扑) 三.实验设备与环境 四.实验设计方案(包括实验步骤.设计思想.算法描述或开发流程等) ...
- 第17周翻译:SQL Server中的事务日志管理的阶梯:第5级:在完全恢复模式下管理日志...
来源:http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 作者:Tony Davis, 2012/01/27 翻译:刘琼滨. ...
- MS SQL “ 无法启动分布式事务“问题的解决思路
MS SQL " 无法启动分布式事务"问题的解决思路 参考文章: (1)MS SQL " 无法启动分布式事务"问题的解决思路 (2)https://www.cn ...
- Microsoft SQL Server中的事务(转载)
1.1 事务的概念 事务是作为单个工作单元而执行的一系列操作,比如查询和修改数据等. 事务是数据库并发控制的基本单位,一条或者一组语句要么全部成功,对数据库中的某些数据成功修改; 要么全部不成功,数据 ...
- 深入sql server中的事务
一. 概述... 1 二. 并发访问的不利影响... 1 1. 脏读(dirty read)... 1 2. 不可重复读(nonrepeatable read)... 1 3. 幻读(phantom ...
- 工作缺点和不足及措施_安全生产 | 查不足 定措施 抓落实 强管理 圣雄氯碱组织开展“事故回头看”工作...
点击上方蓝色文字关注我们吧~ 近日,新疆圣雄氯碱有限公司(以下简称"圣雄氯碱")制定<关于开展圣雄氯碱"事故回头看"工作的通知>,组织开展" ...
- 代码实现sql编译器_【数据蒋堂】第 19 期:从 SQL 语法看集合化
[数据蒋堂]第 19 期:从 SQL 语法看集合化 SQL 作为最常用的结构化数据计算语言,虽然在做一些细致处理时不太方便,但用于描述基本运算还是比 Java 等高级语言要简单许多.这是因为 SQL ...
- 事物日志恢复 mysql_浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用...
本篇文章是系列文章中的第五篇,是对前一个日志系列的补充篇.如果您对日志的基本概念还没有一个比较系统的了解,可以参看本系列之前的文章: 浅谈SQL Server中的事务日志(一)----事务日志的物理和 ...
最新文章
- 【错误记录】Android Studio 配置 AspectJ 报错 ( Failed to create Jar file C:\xxx\aspectjtools-1.8.10.jar. )
- Python -bs4反爬虫解决方法
- 传送门骑士修改服务器数据,传送门骑士修改经验 | 手游网游页游攻略大全
- java跳过_java跳过https证书直接请求工具类
- (连通图 ) Redundant Paths --POJ --3177
- 超大背包问题(二进制枚举 + 二分)
- java数字代码_Java基础08—数字类处理(示例代码)
- Google Guice 快速入门
- 逻辑真题- 19/20年逻辑真题名师讲评 主讲人:王诚
- python数字转中文大写_阿拉伯数字转换成大写汉字的Python代码
- 云顶之弈服务器维护多长时间,英雄联盟3.17更新维护时间介绍 云顶之弈什么时候可以玩_18183云顶之弈专区...
- win10 WLAN共享给以太网口
- P1436 棋盘分割
- 5G通讯的认知与见解
- springboot 解决 NoClassDefFoundError: redis/clients/jedis/util/SafeEncoder
- 打印1000-2000年的闰年
- android版本内存多少,内存大小决定Android系统版本?
- js处理时间戳为各种格式/js判断公历/农历/周历节日和节气
- JAVA 中级 ARRAYLIST - ARRAYLIST上使用泛型
- “最忆是杭州”再次上演,与新华三“谈谈新”