数据库基本知识2

目录

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

排他锁

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

数据模型的三要素

数据独立性


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

  • 为保证数据库是可恢复的,登记日志文件时必须遵循两条原则:
    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负责,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nginx编译时添加额外第三方模块

比如要添加第三方流量监控模块nginx-module-vts 1、官网 官网 Releases vozlt/nginx-module-vts GitHubNginx virtual host traffic status module. Contribute to vozlt/nginx-module-vts development by creating an account on GitHub.https://github.com/vozlt/nginx-mo…

如何使用 Python 解决网络抓取中的 reCAPTCHA 问题

在网络抓取的领域,开发人员经常面临 reCAPTCHA 的障碍。为了区分人类和自动化机器人,reCAPTCHA 可能会成为那些试图从网站提取数据的人的沉痛阻碍。然而,借助 Python 和像 Capsolver 这样的工具,可以绕过 reCAPTCHA 并继续抓取有价…

又一券商被点名,网络安全问题不容忽视

12月25日,黑龙江证监局发布公告表示,江海证券存在关于IT治理、网络安全管理的内部决策、执行机制不健全;公司App个人信息保护合规性检测不充分,App强制、频繁、过度索取权限等问题。因此,黑龙江证监局决定对江海证券采…

java数据结构与算法刷题-----LeetCode509. 斐波那契数

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只…

2024年华为hcie方向有哪些?hcie 考点在哪里?

华为作为全球领先的ICT解决方案供应商,其认证体系在业内具有极高的权威性和认可度。其中,华为认证体系中的最高级别认证——HCIE,已经成为无数技术爱好者追求的目标。下面将探讨华为HCIE的方向及其考点,希望能对那些有志于获取HCI…

数字IC后端实现之Innovus TA-152错误解析(分频generated clock定义错误)

**ERROR: (TA-152): A latency path from the ‘Fall’ edge of the master clock at source pin… Error Code TA-152 在数字IC后端实现innovus中我们经常会看到这类Error,具体信息如下所示。 Error Message **ERROR: (TA-152): A latency path from the ‘Fa…

【第6期】使用Iview的Select组件进行远程搜索并在编辑时设置一个或多个默认值

本期简介 下拉框这个组件用的地方非常多,普通用法就是将数据列表一次性查询渲染,在列表里面直接本地搜索,优点是可缓存、速度快,但在某些场合并不适用,比如要在下拉框中选择一所中国的学校,幼儿园/小学/初…

[AutoSar]DaVinci Developer 命名规范

目录 关键词平台说明一、背景二、Component命名约定2.1Component Type Composition(CtCo)2.2Component Type Application( CtAp)2.3Component Type SensorActuator(CtSa)2.4Component Type Complex Driver&…

ThreadPoolExecutor中的keepAliveTime详解

一.keepAliveTime的概念: keepAliveTime的单位是纳秒,即1s1000000000ns,1秒等于10亿纳秒。 keepAliveTime是线程池中空闲线程等待工作的超时时间。 当线程池中线程数量大于corePoolSize(核心线程数量)或设置了allowCor…

【自学笔记】01Java基础-07面向对象基础-01封装

记录学习Java基础中有关面向对象编程的基础知识,包括面向对象思想,构造方法,封装思想,JavaBean。 1 面向对象概述 1.1 什么是面向对象编程 严谨来说:   面向对象编程(Object-Oriented Programming&…

SpringBoot Redis入门(一)——redis、Lettuce、Redisson使用

本章:将展示SpringBoot集成Redis三种客户端的配置要点和常见应用示例;下章:自行实现一个方法级的缓存注解,简化版的Cacheable,使初学者加深对Spring缓存框架的理解。 一、Lettuce客户端 Lettuce 是一种可扩展的、线程…

lf 的年终总结(2023)

这一年, 我没有进行总结, 只有年终的回顾。 是的, 我又长了一岁, 同时也度过了三年的开发经历, 即将进入五年 Android 开发的阶段。 我只希望在新的一年里能够好好学习,期待有所提升。 回顾过去的生活&…

FAST-LIO2:论文和算法解析

文章目录 摘要一、简介二、相关工作2.1雷达惯导里程计2.2 建图过程中的动态数据结构 三、系统架构四、状态估计A. 卡尔曼模型1.状态转换模型2.测量模型 B.迭代卡尔曼滤波1. 预测过程2. 残差计算3.迭代更新 五、建图A.地图管理B.树的结构与创建1.数据结构2.ikd树的创建 C.地图的…

给Flutter + FireBase 增加 badge 徽章,App启动器 通知红点。

在此之前需要配置好 firebase 在flutter 在项目中。(已经配置好的可以忽略此提示) Firebase 配置教程:flutter firebase 云消息通知教程 (android-安卓、ios-苹果)_flutter firebase_messaging ios环境配置-CSDN博客 由于firebase 提供的消息…

ThreadLocal 是什么?它的实现原理呢?

一个工作了 4 年的小伙伴,又私信了我一个并发编程里面的问题。 他说他要抓狂了,每天 CRUD,也没用到过 ThreadLocal 啊,怎么就不能问我怎么写CRUD 呢? 我反问他如果只问你项目和业务,那有些 4 年的小伙伴他…

光线追踪原理

理论 参考 实现光线追踪算法 光线追踪算法采用由像素组成的图像。对于图片中的每个像素,它会将主光线射入场景(从眼睛(或相机)射入场景的第一条光线称为主光线、能见度光线或相机光线。)。该主光线的方向是通过追踪…

2.0.0 BGP高级特性-ASFilter、CommunityFilter、ORF、对等组

Peer Group BGP对等体组 在网络中出现多台设备配置相近的情况下,使用对等体组可以极大的减少配置命令的输入。 与端口组类似,通过创建一个组,然后将成员添加入其中,可以对组中的成员进行统一的管理。 案例配置1 以AR2为例&…

Python split()方法详解:分割字符串

Python 中,除了可以使用一些内建函数获取字符串的相关信息外(例如 len() 函数获取字符串长度),字符串类型本身也拥有一些方法供我们使用。 注意,这里所说的方法,指的是字符串类型 str 本身所提供的&#x…

ubuntu22.04配置双网卡绑定提升带宽

这里写自定义目录标题 Bonding简介配置验证参考链接 Bonding简介 bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量、实现网络冗余、负载均衡等功能,有很…

专业课130+,总分390+四川大学951信号与系统考研通信,电子信息经验分享

今年专业课130,总分390,顺利上岸,将近一年复习一路走来,感慨很多,希望以下经历可以给后来的同学提供一些参考。 初试备考经验 公共课:三门公共课,政治,英语,数学。在备…