数据库知识整理 - 并发控制(封锁、两段锁协议、意向锁)

数据库并发控制技术 数据库是一个共享资源,可以提供多个用户使用。这些用户程序可以一个一个地串行执行,每个时刻只有一个用户程序运行,执行对数据库的存取,其他用户程序必须等到这个用户程序结束以后方能对数据库存取。但是如果一个用户程序涉及大量数据的输入/输出交换,则数据库系统的大部分时间处于闲置状态。因此,为了充分利用数据库资源,发挥数据库共享资源的特点,应该允许多个用户并行地存取数据库。但这样就会产生多个用户程序并发存取 阅读详情

主要内容

两种基本封锁类型 

封锁协议

活锁

死锁

多粒度封锁

意向锁

锁的强度


 

前提

并发控制技术与前一篇提到的数据库恢复技术是主要的事务处理技术,同时并发控制机制和数据库恢复机制是数据库管理系统(DBMS)的重要组成部分。

在单处理机系统中,事务的并行执行实际上是这些并行事务轮流交叉运行。这种并行执行方式称为交叉并发方式(interleaved concurrency)。虽然单处理机系统中的并行事务并没有真正地(物理上)并行运行,但是减少了处理机和各设备的空闲时间,提高了系统的效率。

在多处理机系统中,当事务数小于处理机数时,每个处理机可以运行一个事务,实现真正意义上的并行运行。这种并行执行方式称为同时并发方式(simultaneous concurrency)。

当多个用户并发地操作数据库时,就有可能出现多个事务同时存取同一数据的情况,这种情况可能会破坏事务的一致性和数据库的一致性,所以数据库管理系统(DBMS)必须提供并发控制机制。并发控制机制是衡量一个DBMS性能的重要标志之一。


 

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

以下三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。

1)丢失修改(lost update):

事务T1和T2先后读入同一数据并修改,T1先提交,T2后提交,T2提交的结果将覆盖T1的结果,导致T1的修改被丢失。

2)不可重复读(non-repeatable read):

事务T1读入某一数据后(未进行操作),T2对同一数据进行了操作(修改、插入、删除),当T1再次读入该数据时,得到与前一次不同的值(或者多了、少了某些记录)。这种不一致性与丢失修改的理想情况相反。

3)读“脏”数据(dirty read):

事务T1修改某一数据后将其写入磁盘,事务T2读入修改后的数据,此时T1由于某种原因被撤销(ROLLBACK),被T1修改的数据恢复原值,导致T2读入的数据与数据库中的数据不一致。


 

封锁

事务T在对某个数据对象,如表、记录等操作之前,需要先向系统发出加锁请求,在事务T释放它的锁之前,其他事务不能对此数据进行修改。

 

两种基本封锁类型 

1)排他锁(exclusive locks,X锁):

排他锁又称为写锁。事务T对数据对象A加上X锁后,只允许事务T对A进行读取和修改,其他事务不能对A加任何类型的锁,直到T释放它的X锁为止。从而保证了其他事务在T释放A上的X锁之前不能对A进行读取和修改。

2)共享锁(share locks,S锁):

共享锁又称为读锁。事务T对数据对象A加上S锁后,事务T只能对A进行读取,而不能修改。其他事务可以继续对A加上S锁,但是不能加X锁,直到T释放它的S锁为止。从而保证了其他事务可以读取A,但是在T释放A上的S锁之前不能对A进行修改。

*需要注意的是,同一事务可以不断对某个数据对象加锁,不需要等锁的释放。

 

封锁协议

1)一级封锁协议:

定义:事务T在修改数据A前,必须先对A加X锁,直到事务结束才释放。因此X锁又被称为写锁,意为修改。

目的:解决“丢失修改”的不一致问题,即在下一个事务操作前,先把上一个事务的修改操作结束。

实现:事务T1的X锁→事务T2的X锁

事务T1对数据对象A加上X锁后,只有等事务T1(修改)结束,释放X锁,事务T2才能对A加锁并进行操作(读取、修改)。

 

2)二级封锁协议:

定义:在一级封锁协议的基础上,增加事务T在读取数据A前,必须先对A加S锁,读完后即可释放。因此S锁又被称为读锁,意为读取。

目的:在一级封锁协议的基础上,进一步解决“读‘脏’数据”的不一致问题,即在下一个事务读取前,先等上一个事务的撤销操作结束。

实现:事务T1的X锁→事务T2的S锁(读取数据后释放S锁)

事务T1对数据对象A加上X锁后,只有等事务T1(修改、撤销)结束,释放X锁,事务T2才能对A加锁并进行操作(读取)。

 

3)三级封锁协议:

定义:在一级封锁协议的基础上,增加事务T在读取数据A前,必须先对A加S锁,直到事务结束才释放(与二级的区别)。

目的:在二级封锁协议的基础上,进一步解决“不可重复读”的不一致问题,即在下一个事务修改前,先等上一个事务的重复读操作结束。

实现:事务T1的S锁(事务结束后释放S锁)→事务T2的X锁

事务T1对数据对象A加上S锁后,只有等事务T1(重复读取)结束,释放S锁,事务T2才能对A加X锁并进行操作(修改)。


 

活锁和死锁

和操作系统一样,封锁的方法可能引起活锁和死锁等问题。

 

活锁

根据事务的优先级顺序,可能会出现某个事务永远在等待封锁的情况,即事务T1封锁了数据对象A后,T2、T3陆续请求封锁,但是T1释放锁后,系统优先批准了T3的请求,T2仍然在等待。

最简单的解决方法就是先来先服务(FCFS),不考虑事务的优先级。

 

死锁

事务T1封锁了数据A,事务T2封锁了数据B,然后T1请求封锁B,与此同时T2也请求封锁A,但因为两个事务的请求都需要等待对方释放锁,这样就出现了永远在等待对方的死锁。

在数据库中,解决死锁问题主要有两类方法:预防和诊断解除。

1)预防:

1. 一次封锁法:每个事务一次将所有要使用的数据加锁,否则事务不能继续执行。

带来的问题:阻碍了其他事务对数据的利用,从而降低了系统的并发度。

2. 顺序封锁法:预先对数据规定一个封锁顺序,所有事务都按照这个顺序加锁,保证“先到先得”。

带来的问题:需要处理的信息太多,开销大,成本高。

 

2)诊断与解除:

1. 超时法:某个事务的等待时间超过规定时间,则系统判定为死锁。

带来的问题:规定时间过短,可能误判死锁;规定时间过长,可能不能及时发现死锁。

2. 等待图法:并发控制子系统周期性地生成事务等待图,动态地反映所有事务的等待情况。如果发现图中存在回路,则表示系统中出现了死锁。

解除方法:通常撤销一个处理代价最小的事务,释放此事务持有的所有锁,使其他事务得以继续运行下去。


 

并发调度的可串行性

可串行性是并发事务正确调度的准则。

当且仅当多个事务的并发执行结果,与按某一次序的串行执行结果相同,这种并发调度策略才是可串行化调度,即具有可串行性。

 

例子(《数据库系统概论(第5版)》p318):

事务T1:读B;A=B+1;写A

事务T2:读A;B=A+1;写B

 

那么如何判断可串行化调度呢?

我们需要引入一个概念——冲突操作,冲突操作是指不同事务对同一个数据的读写和写写操作,其他操作都属于不冲突操作。

很容易理解,对于同一数据的操作,不可能一边在读,同时另一边在写,更不可能两边都在写,这是不符合逻辑的。

 

在一个调度策略中,交换两个事务的不冲突操作的次序,得到另一个调度策略,如果另一个调度策略的执行结果与原来的调度相同,则称原来的调度为冲突可串行化调度。

冲突可串行化调度是可串行化调度的充分条件,但不是必要条件。


 

两段锁协议

为了保证并发调度的正确性,DBMS的并发控制机制必须提供一定的手段来保证调度是可串行化的。

目前DBMS普遍采用两段锁协议(TwoPhase Locking,2PL)来实现,所有事务遵守两段锁协议是可串行化调度的充分条件,但不是必要条件。

 

两段锁的含义:

1)第一阶段(扩展阶段):所有事务对数据加锁,但不能解锁;

2)第二阶段(收缩阶段):所有事务对数据解锁,但不能加锁。

*需要注意的是,不同事务对同一数据的加锁仍遵循两种锁的特性以及封锁协议。

 

预防死锁的一次封锁法遵守两段锁协议;但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。


 

封锁的粒度

封锁粒度(granularity)是指封锁对象的大小。

封锁对象可以是逻辑单元,也可以是物理单元。以关系数据库为例,逻辑单元包括属性值、属性值的集合、元组、关系、索引项、索引表乃至整个数据库;物理单元包括页(数据页或索引页)、物理记录等。

 

封锁粒度与系统的并发度和并发控制的开销有关:封锁粒度越大,数据库能封锁的数据单元越少,并发度越小,系统开销也变小。

一般来说,处理个别元组的事务以元组为封锁粒度;处理某个关系的大量元组的事务以关系为封锁粒度;处理多个关系的大量元组的事务以数据库为封锁粒度。

 

多粒度封锁

在一个系统中,提供多种封锁粒度给不同的事务选择,这种封锁方法称为多粒度封锁( multiple granularity locking)。

  • 定义多粒度树:多粒度树的根结点是整个数据库,表示最大的封锁粒度,叶结点是最小的封锁粒度,如元组、属性值等。
  • 封锁协议:给一个结点加锁的同时,该结点的所有后裔结点也会被加上同样的锁。对于该结点来说,这种加锁方式为显式封锁,而对于其后裔结点来说,这样的方式为隐式封锁。

在多粒度封锁中,显式封锁和隐式封锁的效果是一样的,因此系统检查封锁冲突时,不仅要检查显式封锁,还要沿着多粒度树上下检查隐式封锁。

显然,这样的检查方法效率很低。为此人们引进了一种新型锁,称为意向锁(intention lock)。

 

 

意向锁

对任何一个结点加锁时,必须先对它的上层结点加意向锁。

 

三种常用的意向锁:

1)意向共享锁(IS锁):

对一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁。

事务T1对数据对象A加上IS锁后,事务T2可以继续加除X锁以外的锁。

2)意向排他锁(IX锁):

对一个数据对象加IX锁,表示它的后裔结点拟(意向)加X锁。

事务T1对数据对象A加上IX锁后,事务T2只能继续加IS或IX锁。

3)共享意向排他锁(SIX = S+IX锁):

对一个数据对象先加S锁,再加IX锁。例如对某个表加SIX锁,则表示该事务要读(S)整个表,同时会更新(IX

)个别元组。

事务T1对数据对象A加上SIX锁后,事务T2只能加IS锁。

 

在具有意向锁的多粒度封锁方法中,任意事务T要对一个数据对象加锁,必须先对它的上层结点加意向锁。

申请封锁时应该按自上而下的次序进行,释放封锁时则应该按自下而上的次序进行。(栈结构)

 

具有意向锁的多粒度封锁方法提高了系统的并发度,减少了加锁和解锁的开销,已经在实际的DBMS产品中得到广泛使用。

 

锁的强度

锁的强度是指它对其他锁的排斥程度。

一个事务在申请封锁时,以强锁代替弱锁是安全的,反之不然。

强度排序:

X > SIX > S / IX > IS

 

《数据库原理》知识点整理+习题 数据库基本知识点整理,面试、考研、刷题必备~ 阅读详情

相关推荐

数据库并发控制考点速成:三级封锁协议与两段锁协议详解

数据库并发控制是保障事务隔离性、维持数据一致性的核心技术。在选课系统抢课、银行转账等真实场景中,多个事务同时执行可能引发丢失修改、不可重复读、读脏数据等问题。解决这些问题的核心手段是封锁机制,通过共享锁与排他锁的兼容性控制事务访问,并由此形成一级、二级、三级封锁协议,分别解决不同级别的不一致问题。两段锁协议则用于保证并发调度的可串行化,而锁机制衍生的死锁问题可通过一次封锁法、顺序封锁法预防,或采用等待图检测与回滚解除。掌握这些基础概念与原理,有助于快速理解数据库隔离级别的实现,也是数据库面试与期末笔试的高频

weixin_31155097的博客 250

事务的锁的基本种类及定义

基本的锁的类型有两种锁:排他锁(X锁)和共享锁(S锁)排他锁也叫写锁。当事务T对数据对象A加上X锁时,就只允许事物T对A进行和修改A,其他事务都无法对A再加任何其他的锁,直到T释放对A的锁。共享锁也叫读锁。当事务T对数据对象A加上S锁后,事务T可以读取A,但是不能对A进行修改,其他事务只能对A加上S锁,但是不能加X锁,直到T释放掉对A的S锁为止。封锁协议主要有3种,分别对应的一级、二级、三级封锁协议。一级封锁协议:主要是指事务在修改数据前必须需要先加上X锁,直到事务结束才释放。二级封锁协议:在一级封锁协议的

zly03的博客 2631

MinIO vs 华为云OBS:成本、性能与兼容性深度对比(含实测数据)

本文深度对比了开源对象存储MinIO与华为云OBS在成本、性能、兼容性及运维方面的核心差异。通过实测数据与全生命周期成本分析,为技术决策者提供选型依据。文章指出,MinIO在长期成本控制、性能深度优化及S3 API兼容性方面优势显著,而华为云OBS则提供开箱即用的便利性。

kmeans3miner的博客 595

mysql 的S 锁和X锁的区别

Mysql的锁系统 Shared lock 和 exclusive lock(共享锁和排它锁,也就是读锁和写锁,即read lock 和write lock) 读锁是共享的,或者说是相互不阻塞的, 写锁是排他的,一个写锁会阻塞其他写锁和读锁 共享锁(shared lock S锁) 如果事务T1对数据对象A加上S锁,则事务T可以读A但是不能修改A,其他事务T2只能再对A加S锁,而不是X锁,一直持...

265

IC芯片验证 - 手把手教你搭建UVM验证环境

这是一个UVM的demo项目

howard789的博客 3万+

随机向量函数链神经网络(RVFLNN)简介——附测试代码

宽度学习(Broad Learning System)原理介绍:随机向量函数链神经网络(RVFLNN) 目录宽度学习(Broad Learning System)原理介绍:随机向量函数链神经网络(RVFLNN)结构分析和训练优化 函数链神经网络(Functional-link neural network,简称FLNN)的结构如下图。 和深度神经网络结构不同的是,FLNN相当于把隐层放到了输入层中,作为增强结点(Enhancement nodes)。也可以理解成FLNN在输入层就对输入向量进行了非线性变换

weixin_44517742的博客 1万+

数据库设计基础知识(2)

三级封锁协议 X锁是排它锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都 不能再对A加任何类型的锁,直到T释放A上的锁。S锁是共享锁。若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其 他事务只能再对A加S锁(也即能读不能修改),直到T释放A上的S锁。一级封锁协议:事务在修改数据R之前必须先对其加x锁,直到事务结束才释放。可解决丢失更新问题。二级封锁协议:一级封锁协议的基础上加上事务T在读数据R之前必须先对其加s锁,读完后即可释放s锁。可解决丢失更新、读脏数据问题。三级封锁

flysh05的专栏 993

【学习总结】飞跨电容三电平boost拓扑发波分析与matlab仿真

正常工作时,飞跨电容的电压大约控制在输出电压的一半,降低了开关器件的耐受电压。

晞子的技术札记 1万+

数据库原理 两段锁协议

数据库管理系统通常使用两段锁协议来实现并发调度的可串行性,从而保证调度的正确性 1、两段锁协议 指事务必须分成两个阶段对数据进行加锁和解锁 在释放一个封锁以后,事务不在申请获得其它封锁 2、两段锁的含义 第一段是获得封锁,也称扩展阶段 事务可以获得任何数据项上任何类型的锁,但是不能释放锁 第二段是释放封锁,也称收缩阶段 事务可以释放任何数据项上任何类型的锁,但是不能获得锁 遵守...

yky__xukai的博客 1万+

操作不能完成 (错误 0x00000709) 共享打印机无法连接解决办法

环境:windows Server 2012 + Win10 客户端 问题:使用计算机名和IP地址可以正常连接打印机,但是使用另外的A记录或CN记录无法连接,报此错误 原因:这是打印服务DNS解析的问题 故障补充:假设你的服务器电脑名称叫print01,但是你又建了一条A记录或者CNname 叫PR01,就会发现使用额外的A记录或CN记录就无法连接 故障截图: 操作不能完成 (错误...

瑞哥的博客 3万+

Windowns下Git环境配置-命令行方式

文章目录一、配置Git1.1 下载Git并安装1.2 配置本地Git用户名和邮箱1.3 注册GitHub二、生成本地公钥,放到GitHub上-SSH Key2.1 生成本地公钥命令2.2 查看生成的公钥2.3 在GitHub放上公钥并测试连通性三、创建项目实操四、可能出现的问题4.1.push不成功4.2.提示SSL的问题4.3.域名不能解析的问题4.4.如果github连接不上的问题 一、配置Git 1.1 下载Git并安装 Git官网 默认安装,根据需要修改安装路径 1.2 配置本地Git用户名和邮箱

学习工作笔记 1136

第11章 并发控制 | 数据库知识点整理

第11章 并发控制 了解 数据库并发控制技术的必要性 活锁与死锁的概念 掌握 并发操作可能产生数据不一致的情况,包括丢失修改、不可重复读、读“脏”数据等 封锁的类型及不同封锁类型(X锁、S锁)的性质和定义,相关的相容控制矩阵 封锁协议的概念 封锁粒度的概念,多粒度封锁方法,多粒度封锁协议的相容控制矩阵 封锁协议与数据一致性的关系,并发调度的可串行性概念 两段锁协议与可串行性的关系,...

qq_43382960的博客 1万+

第4节:cesium 0基础发布离线地图(含源码+视频)

cesium发布离线地图

qq_29384639的博客 1597

数据库-第十一章 并发控制【期末复习|考研复习】

给大家整理了一下数据库系统概论中的重点概念,以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。

bblb的博客 2688

uniapp [全端兼容] - 实现内网使用天地图离线地图,详解项目加载天地图的离线地图服务器部署与使用教程示例源码,Uniapp如何实现天地图的离线加载部署在内网访问(兼容H5、微信小程序、App)

uniapp天地图如何离线访问,无需网络调用天地图API,天地图离线地图,天地图——内网使用离线地图,uniapp中加载天地图的离线地图,uniAPP实现天地图离线访问,在内网中无法直接使用外网天地图资源怎么办,在uni-app中加载地图 -使用天地图的瓦片数据。UNIAPP天地图离线怎么使用,内网部署天地图,天地图离线瓦片,部分瓦片数据,天地图如何离线,下载天地图离线服务,并用Uniapp+天地图离线部署,天地图私有化部署,实现离线加载天地图,Java+uniapp天地图离线开发,uniapp项目中无网络

🏆 前端领域优质创作者 4904

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

第11章 并发控制

第11章 并发控制 | 数据库知识点整理 第11章 并发控制 了解 数据库并发控制技术的必要性 活锁与死锁的概念 掌握 并发操作可能产生数据不一致的情况,包括丢失修改、不可重复读、读“脏”数据等 封锁的类型及不同封锁类型(X锁、S锁)的性质和定义,相关的相容控制矩阵 封锁协议的概念 封锁粒度的概念,多粒度封锁方法,多粒度封锁协议的相容控制矩阵 封锁协议与数据一致性的关系,并发调度的可串行性概念 两段锁协议与可串行性的关系,两段锁协议与死锁的关系 知识点 在数据库中为什么要并发控制?并发控制技术能

平安喜乐 2896

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

并发控制(四)两段锁协议

所有事务必须分两个阶段对数据项加锁和解锁,即在对任何数据进行读写操作前,事务首先要对数据项进行封锁。目前数据库普遍采用两段锁协议来实现并发调度的可串行性,从而保证调度的准确性。并发事务都遵守两段锁协议,则对这些事务的任何并发调度都是可串行化调度。事务遵守两段锁协议的一定是可串行化的(充分条件),但不是必要条件。若并发事务有一个遵守两段锁协议,不一定所有事务都符合两段锁协议。以上内容基于圣才教育数据库系统概论ppt 修改整理。两段锁协议和防止死锁的一次封锁法的异同。两段锁的含义:事务分两个阶段。

Red_Bean_Monster的博客 1656

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数据库笔记整理--基于《数据库系统概论》第五版王珊一书|第十一章--并发控制知识整理和课后习题答案

该系列的博客都是基于《数据库系统概论》第五版王珊一书 前提: 因为最近要升学的原因,再加上重温数据库部分内容,所以整理一份比较详细且重点的笔记。适合有考研升学需求的人收藏 B站里也是有该老师的上课视频:链接放在下面: https://www.bilibili.com/video/BV1pW411W7Do?from=search&seid=17230259822734539218 (不过年代比较久远,而且画质一般,有兴趣的可以听听) 第十一章 并发控制 //了解 数据库并发控制技术的必要性

信竞星球_少儿编程题库 4038

【数据库】并发控制

文章目录简介1. 多用户数据库系统2.多事务执行方式2.1 事务串行执行2.2 交叉并发方式(Interleaved Concurrency)2.3同时并发方式(simultaneous concurrency)2.4 事务并发执行带来的问题1 并发控制概述1.1修改丢失1.2 不可重复读1.3 读“脏”数据2 封锁2.1什么是封锁2.2基本封锁类型2.3锁的相容矩阵3 封锁协议3.1什么是封锁协议3.2三级封锁协议3.2.1. 一级封锁协议3.2.2. 二级封锁协议3.2.3. 三级封锁协议3.

No Pain, No Gain . 574

《数据库系统概论》陈红、卢卫 - 12 - 并发控制(下)

本文系统梳理了数据库并发控制的核心概念与实现机制。主要内容包括:1)并发控制目标(正确性与高性能)及知识体系;2)多粒度封锁原理与实现方法,重点阐述意向锁机制及其相容矩阵;3)死锁预防(一次封锁法、顺序封锁法)与诊断技术(超时法、等待图法);4)活锁现象及FCFS解决策略。文章通过三级粒度树等实例,详细解析了如何通过封锁类型优化和层次封锁提升系统并发性能,并对比了不同锁策略的优缺点。最后补充了死锁解除和活锁避免的具体实施方案,为数据库并发控制提供了完整的技术框架。

疯帽子的博客,满脑子都是些“为什么乌鸦像写字台”的问题 822

【学习笔记】数据库系统原理 第十一章 并发控制

以下内容为参考课件和《数据库系统概论》(第5版,王珊等著)的个人整理,若有错误欢迎指出 第十一章 并发控制 文章目录第十一章 并发控制一、概述二、封锁及封锁协议三、死锁和活锁1、死锁2、活锁四、并发调度的可串行性五、两段锁协议六、多粒度封锁 一、概述 多个事务并发执行时可能会相互影响,从而读取或存储不正确的数据。 1、原因:多个事务同时存取同一个数据集合,并且其中至少有一个事务对该数据集合进行更新操作。 2、存在问题 (1)丢失修改:两个事务同时修改同一数据,可能导致某个事务提交的结果破坏了另一个事务提.

Vera_shsf的博客 1252

并发控制知识点合集(复习总结)

数据库并发控制知识点总结,总结了很久,有自己的理解,保证一看就会,很全哒~

m0_73962294的博客 1540

【数据库系统】第三部分 数据库系统(11) 并发控制

本文属于「数据库系统学习实践」系列文章之一,这一系列着重于「数据库系统知识的学习与实践」。由于文章内容随时可能发生更新变动,欢迎关注和收藏数据库系统系列文章汇总目录一文以作备忘。需要特别说明的是,为了透彻理解和全面掌握数据库系统,本系列文章中参考了诸多博客、教程、文档、书籍等资料,限于时间精力有限,这里无法一一列出。部分重要资料的不完全参考目录如下所示,在后续学习整理中还会逐渐补充: 数据库系统概念 第六版 Database System Concepts, Sixth Edition ,作者是 Abr.

memcpy0的博客 781

数据库MySQL基础知识及常见面试题整理

Mysql

ZuoYiFan1996的博客 1927

【最全】《数据库原理及应用》知识点整理+习题

目录 第1章 绪论 1.1术语 1.2重要概念 数据库管理技术的发展过程(三个阶段) 数据模型(Data Model) 逻辑模型的分类(非关系模型与关系模型) 画E-R图 数据库系统结构 第2章 关系数据库 2.1关系数据结构及形式化定义 2.2关系操作 2.3关系的完整性 2.4关系代数 选择 投影 ...

k的博客 12万+

数据库真题整理

文章目录真题(前面的为真题,后面的为期末题)1,大数据和BI数据分析有什么不同,根据应用大数据的场景、来源和技术架构分析一下。2,数据库有哪些范式,他们的定义是什么?什么时候可以不遵守范式?3,什么是事务和程序?他们之间有什么区别?4,事务的四个特性5,登记日志的原则是什么?为什么?6,为什么事务的非正常结束会影响DB的正确性。7,针对不同的故障,试给出恢复策略和方法。8,具有检查点恢复技术有什么...

c1969922921的博客 3217
上一篇: 【数据结构】排序算法
下一篇: 【数据结构】树、二叉树、森林(存储结构篇)
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值