数据库基本知识2

news2024/9/22 11:32:45

目录

为保证数据库是可恢复的,登记日志文件时

排他锁

并发操作带来的数据不一致性

数据模型的三要素

数据独立性


为保证数据库是可恢复的,登记日志文件时

  • 为保证数据库是可恢复的,登记日志文件时必须遵循两条原则:
    1. 登记的次序严格按并发事务执行的时间次序。
    2.必须先写日志文件,后写数据库。

    把对数据的修改写到数据库中和把写表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。如果先写了数据库修改,而在运行记录中没有登记下这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性。所以为了安全,一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。这就是“先写日志文件”的原则。

排他锁

在第一个事务以S 封锁方式读数据A 时,第二个事务对数据A 的读方式会遭到失败的是_A_.
A .实现X 封锁的读 B . 实现S 封锁的读C .不加封锁的读 D .实现共享型封锁的读

在第一个事务以共享锁方式读数据A时,第二个事务对数据A的读方式会遭到失效的是实现排他锁的读

不允许任何其他事务对这个锁定目标再加任何类型锁的锁是排他锁。

并发操作带来的数据不一致性

事务的ACID特性:原子性,一致性,隔离性,持久性。

事务是并发控制的基本单位,保证事务的ACID特性是事务处理的重要任务,而事务ACID特性可能遭到破坏的原因之一就是多个事务对数据库的并发操作造成的。

并发操作带来的数据不一致性主要有丢失修改,不可重复读,读“脏”数据。

1、丢失修改

两个事务T1和T2读入同一个数据并修改,T2提交的结果破坏了T1提交的结果,导致了T1的修改被丢失。典型例子:买飞机票或者火车票的例子。

2、不可重复读

不可重复读指的是事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取的结果。

分为以下三种情况:

(1)事务T1读取了某一数据后,事务T2对其做了修改,当事务T1再次读数据时,得到了与前一次不同的值。

(2)事务T1读取了某一数据后,事务T2删除了其中的记录,当事务T1再次读数据时,发现某些记录神秘消失了。

(3)事务T1读取了某一数据后,事务T2插入了一些新的记录,当事务T1再次读数据时,发现多了一些记录。

后两种操作叫做幻影现象。

3、读“脏”数据

读“脏”数据只得是事务T1修改了某一数据,并将其写回磁盘,事务T2读取某一数据后,T1由于某种原因撤销了操作,恢复原值,这时T2读到的数据就和数据库中的数据不一致,称为读“脏”数据。

产生以上三种现象的原因是并发操作破坏了事务的隔离性。为了应对这些数据不一致性,主要技术主要有:封锁,时间戳,乐观控制法。

两读之间的增删改操作是不可重复读,两读之后的一前一后修改是丢失修改,有回滚的一定是读“脏”数据。

例题:

1、设有两个事务Tl 、T2 ,其并发操作如图所示,下列评价正确的是 B .

A .不存在问题 B .丢失修改C .不能重复读 D .读“脏”数据

T1

T2

① 读A = 10

③ A = A - 5 写回

读A = 10

A = A - 8 写回

2、设有两个事务Tl 、T2 ,其并发操作如图所示,下列评价正确的是 B .

A .该操作不存在问题 B .该操作丢失修改
C .该操作不能重复读 D .该操作读“脏”数据

T1

T2

① 读X=48

③ X=X+10 写回

读X=48

X=X-2 写回

3、设有两个事务Tl 、T2 ,其并发操作如图所示,下列评价正确的是 C .

A .不存在问题B .丢失修改C .不能重复读D .读“脏”数据

T1

T2

① 读A=10,B=5

④ 读A=20,B=5

⑤ 求和25验证错

读A=10

A=A*2 写回

4、设有两个事务Tl 、T2 ,其并发操作如图所示,下列评价正确的是 D .

A .该操作不存在问题B .该操作丢失修改C .该操作不能重复读 D .读“脏”数据

T1

T2

① 读A=100

② A=A*2 写回

④ ROLLBACK

恢复A=100

读A=200

数据模型的三要素

数据模型的三要素是数据结构、数据操作和数据约束。数据模型是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。

数据独立性

数据的独立性是数据库系统的基本的特征之一 。数据独立性是指应用程序和数据结构之间相互独立, 互不影响。

三层模式体系结构中数据独立性是指数据库系统在某一层次模式上的改变不会使它的上一层模式也发生改变的能力。

正是三级模式间的两层映像保证了数据库系统中的数据具有较高的数据独立性。

数据独立性包括数据逻辑独立性和数据物理独立性

数据独立性也是数据库系统的一个最重要的目标之一。它能使数据独立于应用程序。

数据与程序的独立,把数据的定义从程序中分离出去,加上数据的存取又由DBMS负责,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1366967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis Geo:掌握地理空间数据的艺术

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Redis Geo:掌握地理空间数据的艺术 前言Redis Geo基本概念Geo模块的目的工作原理地理坐标系统 GEO的分值1. 经纬度范围2. 二分编码3. Base32编码4. 精度为什么使用Geohash? GEO…

【设计模式】一文理解记住设计模式的原则

目录——阅读所需预计5-10分钟 🎖️前言🎯单一职责原则📣1. 定义💞2. 定义很抽象,咱继续看🎉3. 举几个栗子💞4. 以上栗子出现了一个问题,单一职责的划分究竟可以分多细👉…

计算机毕业设计-----ssm+mysql实现的JavaWeb酒店管理系统

项目介绍 本项目为基于ssmmysql实现的JavaWeb酒店管理系统; 主要功能包括: 管理员登录,收入统计,客房管理,商品管理,客房预订,住宿登记,财务统计,旅客管理,接待对象管理等功能。 环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上…

解压方法之一 zip

文章目录 解压方法之一 zip语法参数参考实例仅保存文件名更多信息 解压方法之一 zip … _linux-beginner-zip: Linux zip命令的功能是用于压缩文件,解压命令为unzip。 通过zip命令可以将很多文件打包成.zip格式的压缩包,里面会包含文件的名称、路径、…

#define宏定义的初探

前言&#xff1a; 最基本的#define定义方式 #define可以定义宏&#xff0c;这点相信大家并不陌生&#xff0c;其定义的方式十分简单&#xff0c;给大家随便来一个最简单、最基础的定义方式看看&#xff1a; #include<stdio.h> #define a 3 int main() { printf(&quo…

CSAPP cache lab - Optimizing Matrix Transpose

CSAPP cache lab part B 矩阵转置 矩阵转置是一种操作&#xff0c;它将矩阵的行和列互换位置&#xff0c;即将原始矩阵的行变为转置矩阵的列&#xff0c;将原始矩阵的列变为转置矩阵的行。转置操作可以通过改变矩阵的布局来方便地进行某些计算和分析。 假设有一个mn的矩阵A&…

java回溯算法、最短路径算法、最小生成树算法

回溯算法 回溯算法实际上一个类似枚举的搜索尝试过程&#xff0c;主要是在搜索尝试过程中寻找问题的解&#xff0c;当发现已不满足求解条件时&#xff0c;就“回溯”返回&#xff0c;尝试别的路径。 最短路径算法 从某顶点出发&#xff0c;沿图的边到达另一顶点所经过的路径中…

autodl学术加速

今天使用autodl加载预训练BERT模型失败&#xff0c;在官方文档里面找到了官方给的代理使用方法。 直接在bash输入&#xff1a; 开启学术加速&#xff1a; source /etc/network_turbo取消学术加速&#xff1a; unset http_proxy && unset https_proxy据说是只能访问这…

.pings勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言&#xff1a; 随着科技的发展&#xff0c;网络空间中的威胁也日益猖獗&#xff0c;其中之一就是勒索病毒&#xff0c;而.pings 勒索病毒则是其中的一种。本文将深入介绍.pings 勒索病毒的特征、恢复被其加密的数据文件的方法&#xff0c;并提供预防措施&#xff0c;以保障…

Python武器库开发-武器库篇之敏感路径扫描器开发(四十二)

Python武器库开发-武器库篇之敏感路径扫描器开发(四十二) 我们在信息收集的过程中&#xff0c;会发现部署的目标网站之后会有很多的敏感文件&#xff0c;比如说配置文件&#xff08;.cfg)、数据文件(.sql)、目录文件&#xff08;/backup /conf /admin&#xff09;。这些配置的…

WSL使用Ubuntu 20.04版本运行py-bottom-up-attention的记录,及其可能错误的解决方法

文章目录 1. 切换linux的镜像2. 安装gcc3. 查看显卡驱动4. 安装gcc版本5. wsl安装cuda 10.16. 新建虚拟环境8. 安装依赖包9. 运行代码错误运行的所有历史命令如下 WSL使用Ubuntu 20.04版本运行py-bottom-up-attention的记录&#xff0c;及其可能错误的解决方法 github代码地址…

Ubuntu下Lighttpd服务器安装,并支持PHP

1、说明 Lighttpd 是一个德国人领导的开源Web服务器软件&#xff0c;其根本的目的是提供一个专门针对高性能网站&#xff0c;安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销、cpu占用率低、效能好以及丰富的模块等特点。 Lighttpd是众多OpenSource轻量级…

C++力扣题目--94,144,145二叉树非递归(迭代)遍历

为什么可以用迭代法&#xff08;非递归的方式&#xff09;来实现二叉树的前后中序遍历呢&#xff1f; 我们在栈与队列&#xff1a;匹配问题都是栈的强项 (opens new window)中提到了&#xff0c;递归的实现就是&#xff1a;每一次递归调用都会把函数的局部变量、参数值和返回地…

使用 vue-json-viewer 工具在界面显示json格式数据

安装vue-json-viewer npm install vue-json-viewer --save 引入&#xff1a; import JsonViewer from vue-json-viewer Vue.use(JsonViewer) 使用&#xff1a; <json-viewer :value"jsonData" show-double-quotes :preview-mode"true" :show-array…

excel中相同类型的数据归到一起显示

1.选中所有数据 2.开始菜单-排序和筛选-自定义排序 3.选择分类关键字 此处&#xff0c;以属性为例 4.效果 归类后的数据&#xff1a;

JetPack组件学习ViewModel

ViewModel的使用 1.需要先创建ViewModel类&#xff0c;继承自ViewModel重写onclear方法&#xff0c;使得页面销毁的时候能够走到自定义的onClear方法中 class MyViewModel : ViewModel() {//共享数据的核心在于拿到同一个LiveData实例&#xff0c;也就是拿到同一个ViewModel实…

面试算法102:加减的目标值

题目 给定一个非空的正整数数组和一个目标值S&#xff0c;如果为每个数字添加“”或“-”运算符&#xff0c;请计算有多少种方法可以使这些整数的计算结果为S。例如&#xff0c;如果输入数组[2&#xff0c;2&#xff0c;2]并且S等于2&#xff0c;有3种添加“”或“-”的方法使…

商中在线(商务中国)域名外部入库流程

注册商是商中在线&#xff0c;且在商中在线管理的&#xff0c;请使用此教程外部入库。 如您的域名注册商是商中在线但在聚名管理&#xff0c;请参考教程&#xff1a;聚名平台域名外部入库流程 -西部数码帮助中心 一、在我司提交入库 1、在【业务管理】-【域名管理】-【外…

Qt/QML编程学习之心得:一个音频播放器的实现(29)

在window下&#xff0c;打开音乐播放器&#xff0c;然后打开一个.mp3文件&#xff0c;就可以实现播放了&#xff0c;那么在Qt/QML中如何实现呢&#xff1f;首先所有的设计都是基于音乐播放器的&#xff0c;嵌入式linux下同样也有音乐播放器&#xff0c;比如mplayer。其调用方法…

2_工厂设计_工厂方法和抽象工厂

工厂设计模式-工厂方法 1.概念 工厂方法模式(Fatory Method Pattern ) 是指定义一个创建对象的接口&#xff0c;但让实现这个接口的类来决定实例化哪个类&#xff0c;工厂方法让类的实例化推迟到子类中进行。 在工厂方法模式中用户只需要关心所需产品对应的工厂&#xff0c;…