【数据库系统概念】第14章 事务 知识总结
《数据库系统概念》第14章知识点总结
事务
事务是访问并可能更新各种数据项的一个程序执行单元。事务通常由高级数据操作语言或编程语言通过JDBC或ODBC嵌入式数据库访问书写的用户程序的执行所引起。事务用形如begin transaction和end transaction语句来界定。
事务的特性
(1)原子性:事务的所有操作在数据库中要么全部正确反映出来,要么完全不反映
(2)一致性:隔离执行事务时保持数据库的一致性
(3)持久性:一个事务成功完成后,它对数据库的改变必须是永久的,即使出现系统故障
(4)隔离性:尽管多个事务可能并发执行,但系统保证,对于任何一对事务Ti和Tj,在Ti看来,Tj或者在Ti开始之前已经完成执行,或者在Ti完成之后开始执行。因此,每个事务都感觉不到系统中有其他事务在并发地执行。
一个简单的事务模型
read(X):从数据库把数据项X传送到执行read操作的事务的主存缓冲区的一个也称为X的变量中
write(X):从执行write的事务的主存缓冲区的变量X中把数据项X传回数据库中
存储结构
易失性存储器:通常信息在系统崩溃后不会幸存
非易失性存储器:信息会在系统崩溃后幸存
稳定性存储器:信息永远不会丢失
事务原子性和持久性
事务的五个状态
活动的:初始状态,事务执行时处于这个状态
部分提交的:最后一个语句执行
失败的:发现侦察和那个的执行不能继续后
中止的:事务回滚并且数据库已恢复到事务开始执行前的状态后
提交的:成功完成后
事务进入中止态时,系统的两种操作
重启事务:仅当引起事务中止的是硬件错误或不是由事务的内部逻辑所产生的软件错误。
杀死事务:这样做通常是由于事务的内部逻辑造成的错误。
并发事务的好处
提高吞吐量和资源利用率
减少等待时间
事务隔离性和原子性
可恢复调度:对于每对事务Ti和Tj,如果Tj读取了之前由Ti所写的数据项,则Ti先于Tj提交。
无级联调度:对于每对事务Ti和Tj,如果Tj读取了先前由Ti所写的数据项,则Ti必须在Tj这一读操作前提交
事务隔离性级别
可串行化:通常保证可串行化调度
可重复读:只允许读取已提交数据
已提交读:只允许读取已提交数据
未提交读:允许读取未提交数据
以上所有隔离性级别都不允许脏写,即如果一个数据项已经被另一个尚未提交或中止的事务写入,则不允许对该数据项执行写操作
隔离性级别的实现
锁
共享锁:用于事务读的数据项,S
排它锁:用于事务写的数据项,X
时间戳
多版本和快照隔离
【数据库系统概念】第14章 事务 知识总结相关推荐
- 《数据库系统概念》一二章学习笔记
书上的例子以及练习题都是用 Mysql 实现的,操作系统使用的 macOS.在使用 Mysql 遇到问题时,推荐查看官方文档 Mysql Reference Manual. 第一章 引言 第一章就是综 ...
- 《数据库系统概念》第一章:引言
数据库(database):一个互相关联的数据的集合. 数据库管理系统(DataBase-Management System,DBMS):由数据库和一组用以访问这些数据的程序组成. 数据视图 数据抽象 ...
- 数据库系统概念 第三章 SQL介绍
文章目录 第 3 章 SQL 介绍 3.1 SQL 查询语言概览 3.2 SQL 数据定义 3.2.1 基本类型 3.2.2 基本模式定义 3.3 SQL 查询的基本结构 3.3.1 单关系查询 3. ...
- Linux 系统编程技巧与概念 第14章 字节次序
字节次序 e.g. unsigned short int a = 1; 会用 2 bytes 表示 HEX 0 1 BIN 00000000 00000001 Big Endian 表示方式 内存地址 ...
- 数据库系统概念 | 第六章:形式化关系查询语言 | 含带答案习题
文章目录
- 数据库系统概念 | 第三章:SQL介绍
文章目录
- 数据库系统概念 | 第七章:使用E-R模型的数据库设计 | ER图设计| ER图转化为关系模型 | 强实体和弱实体
文章目录
- 数据库系统概念:CH14 事务Transactions
CH14 事务 Transactions 事务的必要性 从用户的角度看,数据库的一些操作被认为是一个独立的单元. 比如,支票到存储账户的资金转账是一次操作,而实际在数据库中,这些操作是由几个操作组成的 ...
- 数据库书籍-数据库系统概念(原书第6版)
数据库书籍-数据库系统概念(原书第6版) 基本信息 原书名: Database System Concepts,Sixth Edition 原出版社: McGraw-Hill 作者: (美)Abrah ...
最新文章
- 仅发送options请求,没有发送post解决方案
- HBase性能优化方法总结(1):配置优化
- CodeBlcoks插件
- SAP SD:SAP信贷出口
- 二进制八进制十六进制之间的快速转换------ 心算笔算方法总结
- 授权码模式-获取令牌
- 手环升级鸿蒙设备名单,鸿蒙2.0升级名单已确认-可首批升级的42款机型推荐
- Word2Vec学习笔记(五)——Negative Sampling 模型(续)
- 为什么客户画像这么难?
- 在Android平台上发现新的恶意程序伪装成杀毒软件挟持设备
- 3.企业安全建设指南(金融行业安全架构与技术实践) --- 安全规划
- nginx模块开发 c语言,Nginx模块开发 – C++模块
- linux实训项目有哪些内容,实训项目2__Linux基本命令(带参考答案)
- 【Javascript】length属性
- 二十一世纪大学英语读写基础教程学习笔记(原文)——5 - Shipwrecked in Antarctica(沉船南极洲)
- 英国名校TOP10对Alevel成绩要求汇总
- mbedtls 库基础及其应用
- Android 移动开发 近场通信 蓝牙通信
- Patching OIM 11.1.1.5.0 to 11.1.1.5.3
- 年末放大招,Java进阶大数据3W全套视频免费领!
热门文章
- 阿里云开放云搜索初探
- AssertValid和Dump
- Result Maps collection already contains value for问题
- 计算机考试基础知识及重点试题,大学计算机基础重点知识考试试题
- CF1520G To Go Or Not To Go?
- 业财融合视角下的项目管理体系建设
- 天线的匹配和测量——如何用Smith圆图和网络分析仪优化天线(转)
- 贝叶斯文本分类python_scikit_learn 中朴素贝叶斯算法做文本分类的 实践总结
- cdn cfdn是什么_什么是cdn服务器 作用有哪些【图文】
- Matlab常用的输出命令disp、fprintf