2年过后,实践+工作。层多次遇到和听到事务的概念。不经想起了,当初看的那本sql入门经典。再次翻看。收货巨多!今天来聊聊数据库的事务吧。
所谓不谋全局者不足谋一域,不谋万世者不足某一时。让咱先上一张导图吧。

好吧,是有点看不清的感觉。
下面是思维导图的简易版。

一:背景

  1. 解决数据更新带来的冲突问题。
  2. 事务四个特性

    持久性

    结束时,必须正确保存数据,不管出现什么特殊、意外情况断电、设备失效……
    不能只保存部分、不完整的数据
    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. 更新丢失
  2. 未确认
  3. 前后数据读取不一致:不一致数据 && 幻影插入

五、 实现

**1、使用事务日志**原理记录操作前记录操作后存储和主数据库位于不同物理驱动器问题:性能问题资源开销内存磁盘好处回滚事务操作注意:每种dbms的实现各自不同
**2、使用锁**工作方式(原理)粒度库表页行列级别共享专有死锁降低锁的影响参数化粒度数目级别超时注意:一般的dbms,有自己的锁机制。通常不需要用户来干涉带来的问题死锁处理方法版本控制(Oracle)周期性检测死锁,并随机抽取事务,进行回滚原因性能原因处理方法限制了数据的并发操作作用:确保一致性本质:限制用户的操作
**3、使用隔离级别(某些dbms支持,并不是全部)**概念数据库用户用户的事务之间事务之间被允许的相互干涉程度四个级别serializableallrepeatable read无法解决幻影插入read  committed前后数据读取不一致无法解决read uncommitted仅确保解决更新丢失

六:小结
实在是很恶心,关于csdn的markdone编辑器。巨难用!操作起来两边效果不能得到自己想要的东西。好吧。是时候,转移到github上去玩了。

SQL——回头看,原来“事务”在这里!!!相关推荐

  1. SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因...

    原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...

  2. SQL 实验项目8_事务控制

    大三上:数据库系统概论所有实验报告和课后作业 文章目录 一.实验目的及要求 二.实验内容(或实验原理.实验拓扑) 三.实验设备与环境 四.实验设计方案(包括实验步骤.设计思想.算法描述或开发流程等) ...

  3. 第17周翻译:SQL Server中的事务日志管理的阶梯:第5级:在完全恢复模式下管理日志...

    来源:http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 作者:Tony Davis, 2012/01/27 翻译:刘琼滨. ...

  4. MS SQL “ 无法启动分布式事务“问题的解决思路

    MS SQL " 无法启动分布式事务"问题的解决思路 参考文章: (1)MS SQL " 无法启动分布式事务"问题的解决思路 (2)https://www.cn ...

  5. Microsoft SQL Server中的事务(转载)

    1.1 事务的概念 事务是作为单个工作单元而执行的一系列操作,比如查询和修改数据等. 事务是数据库并发控制的基本单位,一条或者一组语句要么全部成功,对数据库中的某些数据成功修改; 要么全部不成功,数据 ...

  6. 深入sql server中的事务

    一. 概述... 1 二. 并发访问的不利影响... 1 1. 脏读(dirty read)... 1 2. 不可重复读(nonrepeatable read)... 1 3. 幻读(phantom ...

  7. 工作缺点和不足及措施_安全生产 | 查不足 定措施 抓落实 强管理 圣雄氯碱组织开展“事故回头看”工作...

    点击上方蓝色文字关注我们吧~ 近日,新疆圣雄氯碱有限公司(以下简称"圣雄氯碱")制定<关于开展圣雄氯碱"事故回头看"工作的通知>,组织开展" ...

  8. 代码实现sql编译器_【数据蒋堂】第 19 期:从 SQL 语法看集合化

    [数据蒋堂]第 19 期:从 SQL 语法看集合化 SQL 作为最常用的结构化数据计算语言,虽然在做一些细致处理时不太方便,但用于描述基本运算还是比 Java 等高级语言要简单许多.这是因为 SQL ...

  9. 事物日志恢复 mysql_浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用...

    本篇文章是系列文章中的第五篇,是对前一个日志系列的补充篇.如果您对日志的基本概念还没有一个比较系统的了解,可以参看本系列之前的文章: 浅谈SQL Server中的事务日志(一)----事务日志的物理和 ...

最新文章

  1. 【错误记录】Android Studio 配置 AspectJ 报错 ( Failed to create Jar file C:\xxx\aspectjtools-1.8.10.jar. )
  2. Python -bs4反爬虫解决方法
  3. 传送门骑士修改服务器数据,传送门骑士修改经验 | 手游网游页游攻略大全
  4. java跳过_java跳过https证书直接请求工具类
  5. (连通图 ) Redundant Paths --POJ --3177
  6. 超大背包问题(二进制枚举 + 二分)
  7. java数字代码_Java基础08—数字类处理(示例代码)
  8. Google Guice 快速入门
  9. 逻辑真题- 19/20年逻辑真题名师讲评 主讲人:王诚
  10. python数字转中文大写_阿拉伯数字转换成大写汉字的Python代码
  11. 云顶之弈服务器维护多长时间,英雄联盟3.17更新维护时间介绍 云顶之弈什么时候可以玩_18183云顶之弈专区...
  12. win10 WLAN共享给以太网口
  13. P1436 棋盘分割
  14. 5G通讯的认知与见解
  15. springboot 解决 NoClassDefFoundError: redis/clients/jedis/util/SafeEncoder
  16. 打印1000-2000年的闰年
  17. android版本内存多少,内存大小决定Android系统版本?
  18. js处理时间戳为各种格式/js判断公历/农历/周历节日和节气
  19. JAVA 中级 ARRAYLIST - ARRAYLIST上使用泛型
  20. “最忆是杭州”再次上演,与新华三“谈谈新”

热门文章

  1. 【财务分析】一表摸清企业资产负债情况
  2. xcode真机调试错误
  3. 和谐家园二期项目智能化工程公告
  4. [编译原理]构造LR分析器和SLR移进归约分析表
  5. 原码-反码-补码-移码的关系
  6. flask 操作mysql的两种方式-sql操作
  7. 独上高楼之清华艺术博物馆
  8. 读论文《汽车自动驾驶汇总基于单目视觉的障碍物检测》陈存祺
  9. 【无人驾驶视觉系列之】3D障碍物检测(一)
  10. Scrapy 框架抓取美拍视频