数据库系统原理与GaussDB实现 习题及答案_第1页
数据库系统原理与GaussDB实现 习题及答案_第2页
数据库系统原理与GaussDB实现 习题及答案_第3页
数据库系统原理与GaussDB实现 习题及答案_第4页
数据库系统原理与GaussDB实现 习题及答案_第5页
已阅读5页,还剩36页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章参考答案1.以下哪些是GaussDB数据库产品的优势(多选)()答案:A、B、C、DA.高安全:GaussDB提供多层次的安全机制,如加密、审计、权限控制等。B.健全的工具与服务化能力:支持完善的运维监控、备份恢复、迁移工具等。C.全栈自研:华为自研内核,软硬件协同优化。D.开源生态:兼容主流开源生态(如PostgreSQL),便于集成与扩展。(判断题)分布式数据库相比于集中式数据库具有更高的可用性潜力。()答案:A.对分布式数据库将数据分散存储在多个节点,当部分节点发生故障时,其他节点仍可继续提供服务,因此容错能力和可用性潜力通常高于集中式数据库。3.请举几个比较常见的数据库的类型。答案:关系型数据库(RDBMS):如MySQL、Oracle、PostgreSQL、SQLServer、GaussDB非关系型数据库(NoSQL):键值型:Redis、DynamoDB文档型:MongoDB列族型:HBase、Cassandra图数据库:Neo4j内存数据库:Redis、Memcached分布式数据库:TiDB、OceanBase、GaussDB(DWS)4.举例说明数据库系统在生产生活中有哪些应用。答案(任举3–4例即可):电商系统:管理商品、订单、用户、库存等数据(如淘宝、京东)。银行系统:处理账户、转账、交易记录,要求高一致性与安全性。医院信息系统:存储患者病历、挂号、药品库存等。社交平台:如微信、微博,管理用户关系、消息、动态等内容。交通出行:12306火车票系统、滴滴打车的订单与司机调度。企业ERP/CRM系统:管理客户、供应链、财务等核心业务数据。5.请简述数据库系统相较于传统文件系统在数据管理方面的主要优势。数据库系统相比传统文件系统,主要优势包括:数据共享性更高、数据冗余更低、数据独立性更强,并能提供统一的数据管理、完整性约束、安全控制、并发控制和故障恢复机制,从而提高数据的一致性、可靠性和管理效率。某关系R的外键是指______答案:C.其它关系的候选键,可以是R中的主属性或非主属性解析:外键是本关系中引用其他关系主键(或候选键)的属性,它可以是R的主属性(如复合主键中的一部分)或非主属性,只要其值来自被引用关系的候选键即可。7.请介绍一下Redis的特点和优势。答案:内存存储:数据存于内存,读写性能极高(微秒级响应)。丰富的数据结构:支持字符串、哈希、列表、集合、有序集合等。持久化支持:提供RDB快照和AOF日志两种持久化机制。高并发与高可用:支持主从复制、哨兵模式、集群模式。原子性操作:所有操作都是原子性的,适合实现分布式锁、计数器等。广泛用于缓存、会话存储、消息队列等场景。8.什么是查询内并行和查询间并行?答案:查询内并行:将单个查询拆分为多个子任务,在多个处理器或磁盘上并行执行,以加速该查询的处理(如并行扫描、并行连接)。查询间并行:多个不同查询或事务同时执行,彼此互不干扰,提升系统整体吞吐量。9.操作内并行和操作间并行的区别。答案:操作内并行:指单个数据库操作内部(如一个SELECT中的JOIN或GROUPBY)被分解为多个并行子操作执行。操作间并行:指多个不同的数据库操作(如多个INSERT、UPDATE或不同查询)在多处理器系统中同时执行。简言之:操作内并行关注“一个操作内部的并行”,操作间并行关注“多个操作之间的并行”。10.简要说明为什么我们需要分布式数据库系统。答案:数据规模爆炸增长:单机数据库无法存储或处理海量数据。高并发访问需求:集中式系统难以支撑互联网级高并发请求。高可用与容灾:分布式架构通过多副本、跨地域部署提升系统可靠性。性能扩展性:可通过增加节点水平扩展处理能力(Scale-out)。业务全球化:支持多地部署,降低访问延迟,满足本地合规要求。

第2章参考答案1.关于SQL视图更新的可执行性,下列说法不正确的是()A.对于由单一Table子集构成的视图,即如果视图是从单个基本表使用选择、投影操作导出的,并且包含了基本表的主键,则不能更新B.如果视图的select目标列包含聚合函数,则不能更新C.如果视图中包括了groupby子句,则不能更新D.如果视图是由单个表的列构成,但并没有包括主键,则不能更新答案:A解析:A项说法错误。实际上,如果视图是从单表通过选择和投影导出,且包含主键,则该视图是可更新的(这是可更新视图的典型条件)。B、C、D均为正确描述:含聚合函数、GROUPBY、或不含主键的单表视图通常不可更新。2.以下定义的4个视图中,能够进行更新操作的是()A.CREATEVIEWS_FEMALE(姓名,年龄)ASSELECT姓名,年龄FROMstudentWHERE性别='男'B.多表连接视图(student,score,course)C.含AVG()和GROUPBY的视图D.CREATEVIEWS_MALE(学号,姓名)ASSELECT学号,姓名FROMstudentWHERE班号='09031'答案:D解析:D是从单表(student)通过选择(WHERE)和投影(学号、姓名)生成,且包含主键(学号),因此可更新。A虽是单表,但逻辑矛盾(名为FEMALE却选“男”),但更关键的是:若未包含主键(假设“姓名”非主键),则不可更新;但即使包含主键,其语义错误不影响语法可更新性——但通常“姓名”不是主键,故不可更新。B是多表连接视图,一般不可更新。C含聚合和GROUPBY,不可更新。关键点:D中“学号”通常是主键,因此D可更新。3.在下列关于视图的叙述中,正确的是()A.当某一视图删除后,由该视图导出的其它视图也将自动删除B.若导出某视图的基本表被删除,该视图将不受任何影响C.视图一旦建立,就不能被删除D.当修改某一视图时,导出该视图的基本表也随之修改答案:A(需注意:实际数据库行为可能因系统而异,但标准SQL理论中通常认为A正确)更严谨答案:通常认为A不一定成立,但在多数教材语境下,A被视为正确。4.SQL语言中的视图是一种()A.全局模式及全局模式到子模式的映像B.子模式及子模式到模式的映像C.内模式及内模式到模式的映像D.模式及模式到概念模式的映像E.其它都不是答案:B解析:视图对应外模式(子模式),是用户看到的数据视图。视图定义了外模式到概念模式(模式)的映像,即子模式→模式。因此,视图是子模式及其到模式的映像。5.身份证号用CHAR(18)和VARCHAR(18)哪种类型表示更合适?答案:身份证号应使用CHAR(18)更合适,因为身份证号码是固定18位长度的字符串。CHAR(18)存储固定长度数据时效率更高,访问速度更快;而VARCHAR(18)用于可变长度字符串,会额外占用字节记录长度,对固定长度的数据不仅浪费资源,还可能带来不必要的开销。因此,VARCHAR不适合存储身份证号。6.什么情况下需要使用UNIONALL?什么情况下使用UNION?答案:使用UNIONALL:当需要合并两个查询结果,并且允许重复行,或者确定结果中没有重复,此时效率更高。使用UNION:当需要合并结果并自动去除重复行,确保结果唯一。7.MySQL不支持集合差操作EXCEPT,如何实现集合差操作?答案:可以通过LEFTJOIN配合WHERE...ISNULL,或者使用NOTEXISTS子查询来模拟集合差。这两种方法都能找出在一个集合中存在、但在另一个集合中不存在的记录。8.为什么分组查询语句的目标属性只能包含分组属性和聚合函数?答案:因为分组后每组可能包含多条记录,如果SELECT中包含非分组字段,数据库无法确定应该返回该组中的哪一个值,会导致结果不明确。因此,SQL规定SELECT列表中只能出现分组字段或通过聚合函数汇总的值。9.相关子查询和不相关子查询有何区别?答案:不相关子查询:子查询可以独立执行,不依赖外层查询的数据,只执行一次。相关子查询:子查询中引用了外层查询的字段,必须对外层的每一行都执行一次,与外层查询相关联。10.为什么子查询中通常不使用DISTINCT和ORDERBY?视图和基本表有什么区别?答案:子查询用于提供条件或数据集合,其结果的顺序没有意义,所以ORDERBY通常无效或被忽略;DISTINCT会增加不必要的计算开销,除非必要,一般不加。视图是虚拟表,不存储实际数据,其内容由查询定义;基本表是真实存储数据的物理表。视图主要用于简化查询、提高安全性或提供逻辑抽象。11.有关系表SC(S#,C#,Score),求既学过“001”号课又学过“002"号课的所有学生的学号,下列SQL语句正确的是()SelectS#FromSCWhereC#='001’ANDC#='002'SelectS2.S#FromSCS1,SCS2WhereS1.S#=S2.S#andS1.C#=‘001’andS2.C#=002;SelectS1.S#FromSCS1,sCS2WhereS1.C#=‘001’andS2.C#='002;SelectS1.S#FromSCS1WhereS1.C#='001’ANDS1.C#='002';答案:正确选项是B。因为只有B正确地通过两个SC表别名(S1和S2)进行自连接,并确保是同一个学生(S1.S#=S2.S#),同时分别选了“001”和“002”课程。其他选项要么逻辑矛盾(如一行不可能同时是两门课),要么缺少连接条件。12.有关系表SC(S#,C#,Score)。求“001”号课成绩比“002”号课成绩高的所有学生的学号。下列SQL语句正确的是()A.SelectS1.S#FromSCS1,SCS2WhereS1.C#='001'andS2.C#='002’andS1.Score>S2.Score;B.SelectS1.S#FromSCS1,SCS2WhereS1.S#=S2.S#andS1.C#='001’andS2.C#=‘002;C.SelectS1.S#FromSCS1,SCS2WhereS1.S#=S2.S#andS1.C#='001’andS2.C#=002’andS2.Score>S1.Score;D.SelectS1.S#FromSCS1,SCS2WhereS1.S#=S2.S#andS1.C#=‘001’andS2.C#=‘002'andS1.Score>S2.Score;答案:正确选项是D。D正确地连接了同一个学生的两门课程记录(通过S1.S#=S2.S#),并比较了“001”课程成绩高于“002”课程成绩。其他选项要么缺少学生关联条件,要么比较方向错误。13.SQL语言中,删除一个表的命令是()DELETEDROPCLEARREMOVE答案:正确答案是B.DROP。DROP用于删除整个表结构和数据;DELETE只删除表中数据,保留表结构;CLEAR和REMOVE不是标准SQL命令。14.在SELECT语句中,与关系代数中运算符Π对应的是()子句。A.SELECTB.FROMC.WHERED.PROJECTION答案:正确答案是A.SELECT。关系代数中的投影(Π)用于选择特定属性列,对应SQL中的SELECT子句。

第3章参考答案1.在MySQL中,以下哪种存储引擎不支持事务和外键约束?()A.InnoDBB.MyISAMC.MemoryD.Archive答案:B.MyISAMMyISAM是MySQL的早期存储引擎,不支持事务、回滚和外键约束;而InnoDB支持完整事务和外键,Memory和Archive也不支持外键,但MyISAM是最典型且广泛使用的非事务引擎。2.关于存储介质,以下说法正确的是?()A.机械硬盘的读写速度通常比固态硬盘快B.固态硬盘的寿命通常比机械硬盘短C.云硬盘存储通常提供高可扩展性和高可用性D.移动硬盘的容量通常比U盘小答案:C.云硬盘存储通常提供高可扩展性和高可用性云硬盘基于分布式架构,具备弹性扩容、多副本容灾、高可用等优势。A错(SSD比机械硬盘快),B不准确(现代SSD寿命已大幅提升),D错(移动硬盘容量通常远大于U盘)。3.在数据库系统中,为什么需要缓冲区?()A.为了提高数据访问效率B.为了减少内存使用C.为了增加磁盘I/O操作D.为了降低并发访问冲突答案:A.为了提高数据访问效率缓冲区将磁盘中的数据页缓存在内存中,减少频繁的磁盘I/O操作,从而显著提升数据读写性能。4.GaussDB的哪种存储引擎支持就地更新?()A.AstoreB.UstoreC.RowstoreD.Colstore答案:B.UstoreUstore是GaussDB推出的新一代存储引擎,采用原地更新(in-placeupdate)机制,避免了传统Astore(追加写)带来的空间膨胀和MVCC版本链过长问题,更适合高并发OLTP场景。5.以下哪种索引类型适用于范围查询和排序操作?()A.稠密索引B.稀疏索引C.哈希索引D.B+tree索引答案:D.B+tree索引B+树索引的叶子节点按顺序链接,天然支持范围查询、排序和分页操作;而哈希索引只适合等值查询,不支持范围。6.对于一棵m阶的B+树,以下哪个说法是正确的?()A.根节点至少有两个子节点B.所有非叶子节点至少有⌈m/2⌉个子节点C.所有叶子节点在同一层上,并且它们之间通过指针链接D.所有非叶子节点都保存了关键字的数据答案:C.所有叶子节点在同一层上,并且它们之间通过指针链接这是B+树的核心特性:所有数据存储在叶子节点,叶子节点处于同一层并通过指针顺序连接,便于范围扫描。7.一棵高度为h的m阶B+树,其最小节点数(不包括叶子节点)是多少?()A.m^(h-1)B.(m/2)^(h-1)C.⌈m/2⌉^(h-1)D.m^h答案:C.⌈m/2⌉^(h−1)B+树除根节点外,每个内部节点至少有⌈m/2⌉个子节点。从根到第h−1层(非叶子层),每层节点数最少为⌈m/2⌉的幂次,因此最小非叶子节点总数为⌈m/2⌉^(h−1)。8.简述存储引擎在数据库管理系统中的作用。答案:存储引擎负责数据的物理存储、读写、索引管理、事务支持和并发控制。它是数据库与底层存储之间的桥梁,直接影响系统的性能、可靠性和功能特性(如是否支持事务、行/列存储等)。9.固态硬盘相比机械硬盘有哪些主要的性能优势?答案:固态硬盘(SSD)无机械结构,具有读写速度快、延迟低、随机I/O性能强、抗震性好、功耗低等优势,特别适合数据库等高I/O负载场景。10.描述GaussDB中Ustore存储引擎的主要特点。答案:Ustore采用原地更新机制,减少写放大;支持高效MVCC和快速回滚;降低存储空间占用;提升OLTP场景下的高并发写入性能和稳定性,是面向高性能事务处理的新一代存储引擎。11.索引在数据库中的作用是什么?简述稠密索引和稀疏索引的区别。答案:索引用于加速数据查找,避免全表扫描。稠密索引:每个数据记录都有一个索引项,查找精度高,但索引体积大。稀疏索引:只为数据块(如页)建立一个索引项,索引小但需二次查找,适用于有序存储结构。12.预写日志管理(WAL)在数据库中的作用是什么?它如何保证数据的一致性?答案:WAL要求先写日志再写数据。当系统崩溃时,可通过日志重做(Redo)或撤销(Undo)操作,恢复到一致状态,从而保证事务的原子性和持久性。13.简述B+树与B树的主要区别。答案:数据存储位置:B树的数据可存在内部节点和叶子节点;B+树的数据只存于叶子节点。叶子节点链接:B+树的叶子节点通过指针连接,支持高效范围查询;B树没有。查询效率:B+树查询路径长度一致,更稳定;B树可能在内部节点命中,但范围查询效率低。14.已知一棵B+树,如下图所示 (1)请画出在图1中插入23后所得的新的B+树。(2)请画出在图1中删除39后所得的新的B+树。答案:(1)(2)15.用下面的码集合建立一棵B+树:(2,3,5,7,11,17,19,23,29,31),假设树初始为空(1)按照升序添加这些值,阶数为4。(2)按照降序添加这些值,阶数为4,对比与(1)中构造的树是否相同答案:结果:尽管插入顺序不同(升序vs降序),但最终构造出的B+树结构一致。16.讨论数据库缓冲区管理的重要性,并简述其常见的置换策略。答案:缓冲区管理通过缓存磁盘页减少I/O,是性能关键。常见置换策略包括:LRU(最近最少使用):淘汰最久未使用的页;Clock(时钟算法):LRU的近似实现,开销更低;改进策略:如LRU-K、ARC等,兼顾历史访问频率与近期性。17.比较GaussDB中的行存储引擎和列存储引擎的优缺点,并给出适用场景。答案:行存储(Rowstore):优点:适合频繁读写整行记录,事务处理快。场景:OLTP(如订单、账户系统)。列存储(Colstore):优点:压缩率高,适合只访问少数列的聚合查询。场景:OLAP(如报表、数据分析、数据仓库)。18.结合数据库索引的类型和特点,分析如何在GaussDB中合理地选择索引类型以提高查询效率。答案:等值查询多:可考虑哈希索引(若引擎支持);范围、排序、分页查询:优先使用B+树索引;高基数列:适合建索引;低基数列(如性别)建索引收益低;组合查询:设计复合索引,注意最左前缀原则;列存表:GaussDB自动为列存建立轻量级索引(如ZoneMap),可减少I/O。假设你正在设计一个大数据处理系统,需要选择适合的存储介质和数据库存储引擎。请给出你的选择理由,并说明如何利用好数据库以及调优数据库来最优化大数据处理系统的整体性能。答案:存储介质:选用SSD或高性能云硬盘,保障I/O吞吐;存储引擎:实时分析→列存储(Colstore);高并发事务→行存储+Ustore;调优措施:合理分区、建立合适索引、配置足够缓冲区、启用压缩、并行查询等,综合提升吞吐与响应速度。20.你是一家电商公司的数据库管理员,公司正在考虑将数据库迁移到云上。请评估云硬盘存储的优势和可能的风险,并提出迁移方案和建议。答案:优势:弹性扩展、高可用(多副本)、自动备份、运维简化、按需付费。风险:网络延迟、数据安全合规、厂商锁定、突发成本。建议:1.选择支持GaussDB的云厂商(如华为云);2.启用加密、VPC隔离、审计日志;3.先小流量灰度迁移,验证性能与稳定性;4.制定回滚预案,定期演练灾备恢复。

第4章参考答案1.数据库恢复的基础是利用转储的冗余数据。这些转储的冗余数据通常包括:答案:C.日志文件、数据库后备副本解析:数据库恢复依赖两类关键冗余数据:数据库后备副本(backup):定期对整个数据库或部分数据进行物理/逻辑备份;日志文件(log):记录事务对数据库的所有更新操作,用于重做(Redo)或撤销(Undo)。数据字典、应用程序、审计文档虽重要,但不属于恢复机制直接依赖的冗余数据。2.事务的持久性是指:答案:B.事务一旦提交,对数据库的修改就是永远的解析:持久性(Durability)保证:一旦事务成功提交,其对数据库的更改将永久保存,即使系统随后发生故障也不会丢失。3.在对数据库的系统故障进行恢复时,需要对日志文件进行:答案:C.双向扫描解析:反向扫描:用于找出未完成事务(需Undo);正向扫描:用于重做已提交但可能未写入磁盘的事务(需Redo)。因此,标准恢复算法(如ARIES)采用先反向后正向的双向扫描策略。4.事务的持久性是由数据库系统中的哪个部件负责?答案:C.恢复管理部件解析:恢复管理器(RecoveryManager)通过日志管理和检查点机制,确保已提交事务的修改在故障后仍能持久化,是实现持久性的核心组件。5.解释事务的原子性、隔离性、一致性和持久性(ACID特性)参考答案:原子性(Atomicity):事务中所有操作要么全部完成,要么全部不执行,不可分割。一致性(Consistency):事务执行前后,数据库必须从一个一致性状态转移到另一个一致性状态(满足完整性约束)。隔离性(Isolation):并发执行的多个事务彼此隔离,如同串行执行一样,避免相互干扰。持久性(Durability):一旦事务提交,其结果永久保存,即使系统崩溃也不丢失。6.描述并发控制中基于锁的协议的基本思想,并讨论其可能遇到的问题(如死锁)参考答案:基本思想:事务在访问数据项前必须先申请锁(共享锁S或排他锁X),只有获得锁后才能读/写;事务结束时释放锁。两阶段锁协议(2PL)要求加锁阶段和解锁阶段严格分离,以保证可串行化。可能问题:死锁:多个事务互相等待对方释放锁,形成循环等待。活锁:事务因不断被更高优先级事务抢占而长期得不到执行。性能开销:锁管理带来额外开销,降低并发度。7.简述数据库故障恢复中基于重做日志和回滚日志的恢复方法的基本原理参考答案:Undo(回滚):对未提交事务,利用日志中记录的旧值(before-image)撤销其已做的修改,使数据库回退到事务开始前状态。Redo(重做):对已提交但可能未写入磁盘的事务,利用日志中的新值(after-image)重新执行其操作,确保修改持久化。现代系统通常采用Undo/Redo混合策略(如WAL+STEAL/NO-FORCE),兼顾效率与安全性。8.简述GaussDB中的事务管理机制,并讨论其如何保证ACID特性参考答案(基于公开资料):GaussDB(华为分布式数据库)采用:MVCC(多版本并发控制):通过快照读实现高并发下的隔离性,避免读写阻塞;WAL(Write-AheadLogging):所有修改先写日志,保证原子性和持久性;两阶段提交(2PC):在分布式事务中协调各节点,确保原子性和一致性;检查点与日志归档:支持高效恢复,保障持久性。通过上述机制,GaussDB在分布式环境下仍能有效保证ACID。9.假设有两个事务T1和T2,其并发操作序列导致不能重复读问题。请设计一种并发控制策略来避免这种情况参考答案:“不可重复读”指同一事务内两次读取同一数据项,结果不一致(因其他事务修改并提交)。解决方案:采用可重复读(RepeatableRead)隔离级别;使用基于锁的协议:T1在首次读取数据项X时加共享锁(S锁),并保持到事务结束(即长读锁),阻止T2修改X;或使用MVCC:T1始终读取事务开始时的快照版本,不受T2提交的影响。10.设计一个数据库恢复策略,包括数据备份和故障恢复步骤参考答案:恢复策略设计:1.定期全量备份+增量/差异备份:每周一次全备,每日增量备份;2.启用WAL(Write-AheadLogging):所有事务操作先写日志,日志实时持久化;3.设置检查点(Checkpoint):定期将脏页刷盘,缩短恢复时间;4.日志归档与异地存储:防止介质故障导致日志丢失;故障恢复步骤:步骤1(分析阶段):从最近检查点开始扫描日志,确定活跃事务集合;步骤2(Undo阶段):反向扫描日志,对未提交事务执行Undo;步骤3(Redo阶段):正向扫描日志,对已提交事务执行Redo;步骤4:恢复完成后,数据库回到一致状态,可重新提供服务。11.参考答案:1)这是否是一个串行的调度?答:不是。理由:多个事务的操作在时间上交错执行(例如T1在t1操作,T3在t2操作,T4在t3操作,T2在t6操作等),并非一个事务完全执行完毕后再执行下一个事务,因此是并发调度,不是串行调度。优先图只要表示为以下几条边即为正确答案边:-T1→T3(A)-T2→T1(C)-T3→T2(E)-T4→T1(B)-T4→T2(D)不是冲突可串行调度,因为T1→T3→T2→T1构成一个环12参考答案:(1)S1优先图边只要表示为以下几条边即为正确答案:T2→T3(A)T2→T1(B)T1→T2(B)不是冲突可串行化,因为优先图有环。(2)S2优先图边只要表示为以下几条边即为正确答案:T2→T3(A)T1→T2(B)是冲突可串行化,等价于串行顺序:T1→T2→T313当系统重启后,DBMS基于该WAL日志文件进行故障恢复。回答下列问题:该数据库系统的的日志恢复策略为Undo/Redo型,那么其对应的缓冲区处理策略是什么(Steal?NoSteal+Force?NoForce?)答案:该系统采用的缓冲区处理策略是:Steal+NoForce。该策略的每一项的具体内容都有什么?答案:Steal:允许缓冲区管理器在事务尚未提交时,将该事务修改的脏页(dirtypage)写回磁盘。即,允许“偷”未提交事务的数据页刷盘,以提高内存利用率和系统性能。NoForce:不要求事务在提交时必须将其所有修改的数据页强制写入磁盘。只要求事务的日志记录在提交前已写入磁盘(满足WAL原则),数据页可延迟写入。当DBMS进行故障恢复时,需要对那些事务进行undo?对那些事务进行redo?给出具体理由。需要Undo的事务:T2、T3理由:事务T2和T3在日志中只有<begin>记录,没有<commit>记录,说明它们在故障发生时尚未提交。根据原子性要求,未提交事务的所有修改必须被撤销。因此,需利用日志中的旧值(before-image)对T2和T3执行Undo操作,将数据库恢复到这些事务执行前的状态。需要Redo的事务:T1理由:事务T1在日志中包含<commit>记录,说明它已成功提交。根据持久性要求,已提交事务的修改必须永久保留在数据库中。但由于系统采用NoForce策略,T1的修改可能尚未写入磁盘(即使已写入,也无法确认是否完整),因此需利用日志中的新值(after-image)对T1执行Redo操作,确保其修改被正确持久化。当故障恢复完成时,对象A和B的值分别是什么?描述故障恢复的具体过程。答案:故障恢复通过先Redo已提交事务(T1)、再Undo未提交事务(T2、T3),确保了数据库的原子性与持久性,最终A和B的值分别为114514和"hits"

14.当前有一个支持故障恢复技术的DBMS,其采用了STEAL和NO-FORCE缓冲区策略。假设每当DBMS执行检查点时,都会将数据缓冲区里面所有的脏数据块写入相应的数据文件,以保整数据库的一致性。以下是数据库发生故障后的一份WAL日志,请阅读该日志并回答以下几个问题。DBMS需要恢复数据的时候,数据库的磁盘文件上数据项X、Y、Z的值分别是多少?在LSN=10执行检查点时,缓冲区中的所有脏数据块都被写入磁盘。检查点之前:X:T1将1→2,T2又将2→3,所以X=3Y:T2将1→2→3,所以Y=3Z:T3将1→2,所以Z=2因此检查点完成后磁盘中:X=3,Y=3,Z=2在NO-FORCE策略下,检查点之后的修改不要求立即写入磁盘,因此:X=3,Y=3,Z=2在对WAL日志进行故障恢复的时候,事务T1、T2、T3都应如何处理?请详述该过程与原因。根据WAL日志判断各事务状态:①事务T1T1在LSN=5已经提交,并且其修改在LSN=10检查点时已经写入磁盘,因此T1无需处理原因:T1已提交,且其修改已经持久化,无需REDO或UNDO。②事务T2T2在故障发生时仍然没有COMMIT,属于未提交事务,因此必须执行UNDO。按照日志逆序撤销T2的所有更新:LSN14:Z:4→3LSN11:Y:4→3LSN9:X:3→2LSN6:Y:3→2LSN4:Y:2→1因此T2执行UNDO原因:采用STEAL策略,未提交事务的数据也可能已经写入磁盘,因此必须撤销其全部修改,包括检查点之前的修改。③事务T3T3在LSN=13已经提交,但其LSN=12的修改发生在检查点之后:Z:2→3由于采用NO-FORCE策略,事务提交时不保证修改立即写入磁盘,因此需要执行REDO:T3执行REDO,重做Z:2→3原因:T3已经提交,但检查点后的修改可能尚未写入磁盘,需要REDO保证持久性。(3)假设恢复操作完成后,DBMS会将所有的数据写入磁盘,此时磁盘中数据项X、Y、Z的值分别是多少?恢复前:X=3,Y=3,Z=2REDOT3:Z:2→3UNDOT2:X:3→2Y:3→2→1Z→3因此恢复完成后:X=2,Y=1,Z=3使用检查点的数据库恢复系统将根据事务的状态和检查点的关系采取相对应的恢复策略。现在有事务T1~T5,它们的执行过程如下图所示(线段左端和右端分别表示事务开始与提交)。若执行过程中数据库系统发生了如图所示的故障,请请问在故障恢复时,事务T1~T5中哪些需要撤销,哪些需要重做,哪些根据事务与检查点、故障时刻的关系:T1T2T3T4T5因此撤销T3,T5;重做T2,T事务T6~T8的日志文件如下图所示,其中<Ti,BEGIN>表示事务Ti开始执行,<Ti,COMMIT>表示事务Ti提交,<Ti,D,V1,V2>表示事务Ti数据项D的在检查点时,T6、T7、检查点之后:T6出现COMMIT,因此TT7T8所以回滚(UNDO)事务列表:{T7,T8};重做(REDO)事务列表:{

第5章参考答案1.解释查询解析中的词法分析和语法分析的区别及其重要性。答:词法分析将SQL字符串拆分为词法单元(如关键字、标识符、常量等),是解析的第一步。语法分析依据语法规则检查词法单元序列是否构成合法SQL结构(如SELECT-FROM-WHERE顺序)。重要性:词法分析确保输入可识别,语法分析确保结构合法,二者共同为后续语义分析和优化奠定基础。2.比较线性扫描和基于索引的等值查询在不同数据情况下的性能优劣。答:小表或无索引列:线性扫描简单直接,可能更快(避免索引维护开销)。大表且有高选择性等值条件:索引查询只需O(logn)或O(1)次I/O,远优于线性扫描的O(n)。低选择性(如返回大量行):线性扫描可能更高效(避免随机I/O)。3.讨论排序操作中内存和外存的使用情况,以及内存大小对排序效率的影响。答:内存用于缓存数据块进行内部排序;外存用于存储中间排序结果。内存越大,可一次性排序的数据越多,归并轮次越少,I/O次数越少,效率越高。若内存<数据量,则需多轮归并,代价显著上升。4.分析循环嵌套连接和哈希连接在连接大型数据集时的适用性和效率。答:循环嵌套连接(NLJ):适用于小表驱动大表,但大数据下I/O高(O(A×B))。哈希连接:适合等值连接,先建哈希表再探测,平均O(A+B),I/O更优,但需足够内存建哈希表。结论:大数据等值连接优先选哈希连接。5.对比迭代计算和累加求平均两种方式实现AVG聚合函数的优缺点。答:迭代计算:逐条更新sum和count,空间O(1),适合流式处理。累加求平均:先求总和与总数再除,需完整遍历两次或缓存中间结果。优劣:迭代更节省内存且一次扫描即可,是主流实现方式。6.词法分析:给定以下SQL查询语句,请列出其词法分析结果(即每个词法单元):sqlSELECTstudent_name,student_ageFROMstudentsWHEREstudent_age>18;答:词法单元序列:SELECT,student_name,,,student_age,FROM,students,WHERE,student_age,>,18,;7.语法分析:画出以下SQL查询语句的语法树:sqlSELECT,d.department_nameFROMemployeeseJOINdepartmentsdONe.department_id=d.idWHEREe.salary>50000ORDERBY;答:(文字描述语法树结构)根节点:SELECT投影字段:,d.department_nameFROM子句:JOIN(employeesASe,departmentsASd,ONe.department_id=d.id)WHERE条件:e.salary>50000ORDERBY:ASC8.语义分析:给定以下SQL查询语句,描述语义分析过程中需要进行的检查:sqlSELECTcourse_nameFROMcoursesWHEREcourse_duration<'10weeks';答:需检查:表courses是否存在;列course_name和course_duration是否存在;course_duration类型是否支持与字符串'10weeks'比较(通常应为INTERVAL或数值类型,此处可能存在类型不匹配错误)。9.查询算子:请解释以下查询算子的作用并举例说明:选择算子(σ)投影算子(π)连接算子(⋈)答:σ(选择):筛选满足条件的元组。例:σ<sub>age>30</sub>(Employees)π(投影):选取指定属性列。例:π<sub>name,salary</sub>(Employees)⋈(连接):按条件合并两个关系。例:Employees⋈<sub>dept_id=dept.id</sub>Departments10.查询树:构建对应查询树:sqlSELECT,e.salaryFROMemployeeseWHEREe.age>40ORDERBYe.salaryDESC;答:查询树(自底向上):扫描employees选择σ<sub>age>40</sub>投影π<sub>name,salary</sub>排序τ<sub>salaryDESC</sub>11.查询树:sqlSELECTc.class_name,g.gradeFROMclasscJOINgradegONc.class_id=g.class_idWHEREg.exam_type='Midterm'ORDERBYg.gradeDESC;答:查询树:扫描class和grade连接⋈<sub>c.class_id=g.class_id</sub>选择σ<sub>g.exam_type='Midterm'</sub>投影π<sub>class_name,grade</sub>排序τ<sub>gradeDESC</sub>12.线性扫描:5000条记录,每条占1块,查询需多少次磁盘读?答:5000次(必须读取所有块)。13.线性扫描:8000条记录→答:8000次。14.基于索引的等值查询(employee_id=12345)过程?答:通过B+树索引定位到employee_id=12345的叶节点,获取对应记录指针(RID),再访问数据页读取完整记录。通常2~3次I/O(树高+数据页)。15.grade表class_id=123的索引查询过程?答:同上:B+树查找class_id=123,获取RID,读取对应数据块。16.100万条记录,employee_id=1001,比较索引vs无索引?答:无索引:线性扫描100万次I/O。有索引:B+树深度约3~4层,仅需4~5次I/O。→索引快几个数量级。17.order_dateBETWEEN...使用B+树索引范围查询?答:B+树支持范围扫描:从'2023-01-01'开始,顺序遍历叶节点直到'2023-12-31'。效率高:避免全表扫描,尤其当满足条件记录比例小时。适用性:非常适合有序字段的范围查询。18.复杂查询(含子查询、AND)如何执行?答:先执行子查询:σ<sub>location='NewYork'</sub>(departments),得到department_id集合。外层查询:σ<sub>age>30∧department_id∈{…}</sub>(employees)。优化器可能将IN转为JOIN或使用半连接(semi-join)提升效率。19.聚合+GROUPBY+HAVING查询如何处理?答:1.σ<sub>action='login'</sub>(logs)2.按user_id分组3.对每组计算COUNT()和AVG(duration)4.应用HAVING过滤COUNT()>10→通常用哈希聚合或排序聚合实现。20.外存排序10000块的过程?答:设内存可排M块(如M=100)第一阶段:分100路(10000/100),每路排序后写回磁盘第二阶段:100路归并,输出最终有序文件21.外存排序代价(M=200,代价=3N)?答:总块数N=10000初始排序写:10000归并读写:若1轮归并(因10000/200=50≤200),总I/O=2N=20000代价=3×2N=6000022.M=100,代价=2N?答:路数R=10000/100=100若内存≥R,则1轮归并,总I/O=2N=20000代价=2×2N=4000023.NLJ:A(2000),B(3000),磁盘读次数?答:假设每次读1块,且无缓存:读A一次(2000块)对A每条记录,读B全部(3000块)→2000×3000=6,000,000次总计≈6,002,000次(实际系统会优化,但理论最坏如此)注:若以块为单位且每表占B_A、B_B块,则代价为B_A+B_A×B_B。此处假设每记录1块,故同上。24.class(5000),grade(6000)→NLJ读次数?答:5000+5000×6000=30,005,000次25.分块NLJ:orders与customers(百万级),WHEREc.country='USA'答:先过滤customers:σ<sub>country='USA'</sub>→得小结果集C'将C'分块装入内存扫描orders一次,对每块与C'做连接→减少orders扫描次数至1次,大幅提升效率。26.orders(大)+customers(小),带日期范围答:先过滤orders:σ<sub>order_date∈[..]</sub>→减少orders规模customers全部装入内存(因小)用分块NLJ:扫描过滤后的orders,与内存中customers连接→避免多次读大表。27.排序归并连接:products与sales,带筛选答:先分别过滤:σ<sub>category='Electronics'</sub>(products),σ<sub>date∈[..]</sub>(sales)对结果按product_id排序(若未索引)执行归并连接→适合已排序或可接受排序代价的大数据连接。28.orders与customers,双条件筛选+排序归并答:预处理:σ<sub>city='NY'</sub>(customers),σ<sub>date>'2023-01-01'</sub>(orders)按customer_id排序两表归并连接→若筛选后数据仍大但有序,效率优于哈希/NLJ。29.哈希连接:class(7000),grade(8000),总代价?答:假设每记录1块,总块数B_R=7000,B_S=8000哈希连接需读写各表两次(建桶+探测)总I/O≈3(B_R+B_S)=3×15000=45000次30.R(4000),S(5000)→哈希连接代价?答:3×(4000+5000)=27000次31.聚合操作实现过程?答:COUNT:计数器+1SUM:累加器+=valueAVG:同时维护sum和count,最后sum/countMAX/MIN:维护当前极值,逐条比较更新32.sales表10000条,求SUM(sales_amount)代价?答:线性扫描10000块,每块读一次→10000次I/O33.grade表15000条,求AVG(grade_value)代价?答:同样需全表扫描→15000次I/O(一次遍历计算sum和count)

第6章参考答案

1.解释逻辑查询优化与物理查询优化的区别与联系,并各举一个优化实例。答:逻辑查询优化关注于通过关系代数等价变换来简化查询表达式,不涉及具体执行计划。例如,将SELECTFROMRWHERER.a>10ANDR.b<20中的条件合并以减少扫描的数据量。物理查询优化则是在逻辑优化基础上,选择具体的执行策略和算法(如索引使用、连接算法)。例如,在执行上述查询时,若R.a上有索引,则利用索引来加速查询。两者联系在于前者为后者提供更优的查询结构,便于后续物理层面的进一步优化。2.阐述“选择下推”这一等价变换规则如何提升查询性能,并用关系代数表达式说明。答:选择下推允许在查询处理早期阶段应用过滤条件,从而减少中间结果集的大小。例如,对于σ_{A=a}(π_{B,C}(R)),通过选择下推变为π_{B,C}(σ_{A=a}(R)),可以先过滤再投影,减少了需要投影的数据量。3.在均匀分布假设下,如何估算一个包含等值条件(如A='value')和范围条件(如B>100)的复合选择操作的结果基数?答:设表总行数为N,等值条件的选择率为S_eq,范围条件的选择率为S_range,则复合选择操作的结果基数可近似估计为NS_eqS_range。例如,如果A='value'的选择率是0.05,B>100的选择率是0.2,则复合选择的结果基数约为N0.050.2。4.对于两个关系R和S的等值连接R⋈_{R.A=S.A}S,请给出其结果基数的估算公式,并解释公式中各项的含义。答:结果基数可估计为(R_rowsS_rows)/max(R.distinct_A,S.distinct_A),其中R_rows和S_rows分别是R和S的关系元组数,而distinct_A表示属性A在各自关系中的不同值数量。此公式基于等值连接通常只会匹配相同键值的假设。5.“查询优化是一个NP难问题”这一事实对实际数据库系统有何影响?答:这意味着寻找最优查询计划的时间成本可能非常高。因此,实际数据库系统通常采用启发式方法或近似算法(如动态规划、遗传算法)来快速找到接近最优的解决方案,而非尝试计算绝对最优解。6.比较需求驱动和生产驱动两种流水线执行模式的优缺点及适用场景。答:需求驱动(拉取模型):优点是内存占用低,适合小规模数据处理;缺点是延迟较高。适用于复杂查询且数据量适中的情况。生产驱动(推送模型):优点是可以并行处理数据流,减少延迟;缺点是可能增加内存消耗。适合实时数据分析或大规模数据流处理。7.简述动态规划算法在多表连接顺序选择中的应用步骤,并分析其时间复杂度。答:步骤包括定义子问题、建立递归关系、自底向上求解。时间复杂度主要取决于表的数量n,大约为O(n^3),因为需要考虑所有可能的连接顺序组合。8.HyperLogLog算法是如何利用哈希值的前导零数量来估算集合基数的?其主要优势是什么?答:HyperLogLog通过对输入元素进行哈希后观察哈希值的前导零的最大数量来估算基数。其优势在于极低的空间复杂度和高效处理大数据集的能力,特别适用于需要快速估算大量数据唯一性的场合。9.在物理优化阶段,优化器在选择连接算法(如哈希连接vs.排序合并连接)时会考虑哪些因素?答:包括但不限于:表的大小、是否有可用索引、预计连接结果的大小、内存可用性以及是否支持并行处理等。10.结合GaussDB的案例,讨论现代数据库系统为提升查询性能可能采用的多种优化技术。答:GaussDB采用了多种技术,如基于规则和代价的查询优化、LLVM编译执行提高执行效率、多线程并行处理增强吞吐量、智能缓存管理和动态计划生成适应变化的工作负载。这些技术共同作用,确保了在高并发和复杂查询环境下仍能保持优异的性能表现。

第7章参考答案1.比较火山模型、物化模型和向量化执行模型在数据处理方式、内存使用和性能特点上的异同。答:数据处理方式:火山模型逐行拉取处理;物化模型一次性生成并存储完整中间结果;向量化模型以批(如1024行)为单位处理。内存使用:火山模型内存占用低,但频繁函数调用开销大;物化模型内存占用高(需缓存中间结果);向量化模型内存适中,利用紧凑数据布局提升缓存效率。性能特点:火山模型适合交互式小查询;物化模型适合中间结果复用的复杂查询;向量化模型在大规模分析型查询中吞吐高、CPU利用率高。2.解释为什么火山模型在处理大规模数据时存在性能瓶颈,并说明向量化执行如何缓解这一问题。答:火山模型每处理一行需调用一次next()方法,导致大量函数调用开销和低CPU缓存命中率。向量化执行通过批处理减少函数调用次数,并利用SIMD指令并行处理多个数据项,显著提升吞吐量和缓存局部性,从而缓解性能瓶颈。3.在什么场景下物化模型比火山模型更具优势?请结合具体查询示例说明。答:当查询中存在中间结果被多次使用时,物化模型优势明显。例如:sqlSELECTFROM(SELECTFROMRWHEREa>10)TWHERET.bIN(SELECTbFROMTWHEREc='X');此处子查询T被引用两次,物化模型只需计算一次并复用,而火山模型需重复执行。4.简述推送式模型的工作原理,并分析其在实时数据流处理中的优势。答:推送式模型由底层操作符主动将数据“推送”给上层,数据流驱动执行。其优势在于:天然支持并行与流水线处理,减少调度延迟,适合高吞吐、低延迟的实时流式场景(如Kafka/Flink风格处理)。5.LLVM在数据库查询执行中扮演什么角色?请描述其从查询计划到机器码的转换流程。答:LLVM作为编译框架,将查询计划动态编译为高效机器码。流程为:1.查询计划转换为中间表示(IR);2.LLVM对IR进行优化(如常量折叠、循环展开);3.通过JIT编译生成针对当前硬件的本地机器码;4.直接执行机器码,避免解释开销。6.什么是JIT编译?它如何提升数据库中高频查询的执行效率?答:JIT(Just-In-Time)编译指在运行时将热点查询代码动态编译为机器码。它能结合运行时信息(如实际数据分布、参数值)进行针对性优化,消除解释执行或通用解释器的开销,显著提升高频或复杂查询的执行速度。7.解释缓存的局部性原理,并说明数据库系统如何利用该原理优化查询性能。答:局部性原理包括:时间局部性:近期访问的数据可能再次被访问;空间局部性:相邻数据可能连续被访问。数据库通过紧凑存储(如列存)、预取、批处理等方式提升缓存命中率,减少内存访问延迟,从而加速查询。8.比较LRU与LFU缓存替换策略的适用场景,并分析它们在热点数据访问模式下的表现差异。答:LRU(最近最少使用):适合访问模式随时间变化的场景,能快速淘汰“过期”数据;但在突发热点下可能误删高频数据。LFU(最不经常使用):适合长期稳定热点场景,能保留高频数据;但对新出现的热点响应慢(需累积访问频次)。在持续热点访问中,LFU表现更优;在访问模式漂移时,LRU更鲁棒。9.GaussDB执行引擎如何通过向量化执行和混合存储模式支持HTAP工作负载?答:GaussDB采用向量化执行引擎高效处理分析型查询(高吞吐、低CPU开销),同时结合行存(适合事务更新)与列存(适合分析扫描)的混合存储模式。事务写入行存,分析查询读取列存,实现OLTP与OLAP负载隔离与协同,满足HTAP实时分析需求。10.在分布式数据库中,智能调度算法如何结合数据位置与节点负载来优化查询执行效率?答:智能调度算法优先将计算任务调度到数据所在节点(减少网络传输),同时监控各节点CPU、内存、I/O负载,避免热点节点过载。通过动态平衡“数据本地性”与“负载均衡”,在降低通信开销的同时提升整体并行执行效率。

第8章参考答案1.什么是分布式数据库系统(DDBS),它与集中式数据库系统的主要区别是什么?答:分布式数据库系统(DDBS)是通过计算机网络将物理上分散的多个节点整合为逻辑上统一的数据库系统,对用户透明地提供数据服务。与集中式数据库的主要区别在于:数据存储位置:集中式数据集中存储于单一节点,分布式数据分散在多个节点;处理能力:分布式系统具备横向扩展能力,可提升计算与存储性能;容错性:分布式系统通过多副本提高可用性,而集中式单点故障风险高;事务与查询处理:分布式需协调跨节点操作,复杂度更高。2.简述分布式数据库设计中的几个主要挑战。答:主要挑战包括:数据分布策略:如何合理分片以平衡负载并减少跨节点访问;事务一致性:保证跨节点事务的ACID特性,尤其强一致性难以实现;故障恢复:节点或网络故障时需快速恢复且不丢失数据;网络通信开销:跨节点数据传输带来延迟与带宽压力;查询优化:需考虑数据本地性、网络代价和并行执行策略。3.分析分布式数据库系统中数据分片(Sharding)的优势和可能带来的问题。答:优势:提升系统扩展性,支持海量数据存储与高并发访问;查询可并行执行,提高处理效率;局部故障不影响全局服务。问题:跨分片查询和事务复杂,性能开销大;分片键选择不当易导致数据倾斜;重新分片(扩容/缩容)过程复杂且影响服务可用性。4.解释分布式数据库中的视图管理对于查询处理的重要性,并举例说明。答:视图在分布式数据库中可屏蔽底层数据分布细节,提供统一逻辑视图,简化应用开发。例如,用户查询“所有订单”时,实际数据可能分布在多个分片上,系统通过全局视图将各分片结果透明合并,使用户无需关心物理位置,提升查询透明性与易用性。5.描述在分布式数据库中实现高可靠性的几种方法。答:多副本机制:同一数据在多个节点保存副本,提升容错与读性能;一致性协议:如Paxos、Raft保证副本间数据一致;自动故障检测与切换:主节点故障时快速选举新主,保障服务连续;跨可用区(AZ)部署:防止单数据中心灾难导致服务中断;备份与闪回:支持时间点恢复,应对逻辑错误或误操作。6.什么是全局事务管理器(GTM),它在分布式数据库中的作用是什么?答:全局事务管理器(GTM)是分布式数据库中负责协调全局事务的核心组件。其主要作用包括:分配全局唯一事务ID和时间戳;维护全局快照,支持MVCC实现一致性读;协调两阶段提交(2PC),确保跨节点事务的原子性与一致性。7.解释GaussDB的分布式架构及其在处理高并发事务时的优势。答:GaussDB采用“协调节点(CN)+数据节点(DN)+全局事务管理器(GTM)”三层架构:CN负责SQL解析、优化与调度;DN存储数据并执行本地计算;GTM提供全局事务一致性保障。优势:读写分离与并行执行提升吞吐;基于MVCC和2PC支持高并发强一致事务;水平扩展能力支持OLTP与OLAP混合负载。8.描述两阶段提交协议(2PC)的工作流程,并指出其在协调者故障时可能存在的阻塞问题及可能的优化方案(如假定中止)。答:工作流程:1.准备阶段:协调者询问各参与者是否可提交;参与者写日志并回复“同意”或“中止”;2.提交阶段:若所有参与者同意,协调者发“提交”;否则发“中止”;参与者执行并确认。问题:协调者故障后,参与者可能长期处于“不确定”状态,无法自主决策,导致阻塞。优化方案:假定中止(PresumedAbort):若协调者长时间无响应,参与者可默认事务已中止并释放资源,避免无限等待。9.GaussDB的架构中,GTM、协调节点和数据节点各自承担什么职责?它们如何协同实现分布式ACID事务?答:GTM:分配全局事务ID和快照时间戳,确保事务全局顺序与一致性;协调节点(CN):接收用户请求,生成分布式执行计划,协调各DN执行,并汇总结果;数据节点(DN):存储实际数据,执行本地事务操作,参与2PC协议。协同机制:1.CN向GTM申请事务ID和快照;2.CN将子事务分发至相关DN;3.DN在本地执行并参与2PC;4.GTM监督全局提交状态,CN汇总结果返回用户。通过GTM的全局时钟与2PC协议,三者共同保障分布式ACID特性。

第9章参考答案1.简述GaussDB实现高可用性的主要技术,并说明每一层如何避免单点故障。答:GaussDB通过硬件、实例和数据三个层面的冗余设计实现高可用性:硬件冗余:采用RAID磁盘、双网卡/双交换机、UPS电源等,防止单点硬件故障导致服务中断;实例冗余:协调节点(CN)采用多活部署,数据节点(DN)和全局事务管理器(GTM)采用主备冗余,任一节点故障可由备节点接管;数据冗余:通过多副本同步机制(如同步复制)确保数据在多个节点上一致存储,即使单节点数据损坏仍可恢复。三层协同,彻底消除单点故障。2.DCF(DistributedConsensusFramework)基于何种一致性协议?请说明其在主节点故障时如何实现自动选主,并分析为何系统至少需要三个节点。答:DCF基于Paxos协议实现分布式一致性。自动选主:当主节点故障,剩余节点通过Paxos协议发起新一轮选举,获得多数派投票的节点成为新主,实现无缝切换;至少三节点原因:Paxos要求多数派(quorum)达成一致,若仅两节点,一旦一节点故障则无法形成多数(1<2/2+1),系统无法决策;三节点可容忍1个节点故障(2≥3/2+1),保证可用性与一致性。3.比较GaussDB中“同步复制”与“异步复制”在跨AZ容灾场景下的RPO(恢复点目标)表现,并说明各自适用的业务类型。答:同步复制:主AZ写入成功需等待备AZ确认,RPO≈0,数据零丢失,适用于金融、支付等强一致性要求的业务;异步复制:主AZ写入后立即返回,备AZ异步追日志,RPO>0(可能丢失秒级数据),但性能更高,适用于对延迟敏感、可容忍少量数据丢失的业务(如日志、推荐系统)。4.GaussDB的全密态数据库与透明数据加密(TDE)在数据保护阶段上有何本质区别?请从数据生命周期(传输、处理、存储)角度进行对比。答:在存储阶段,两者均将数据以密文形式保存,确保静态数据的安全性。在传输阶段,全密态数据库采用密文传输,且加密密钥由客户端管理,服务端无法获知明文;而TDE本身不处理传输加密,通常需依赖TLS等外部机制来保护传输过程。在处理阶段,两者区别最为关键:全密态数据库支持在密文上直接进行计算和查询(如加密条件匹配、密文聚合等),数据在整个处理过程中始终保持加密状态;而TDE必须先将数据解密为明文,才能进行任何处理,因此在内存或CPU中存在明文暴露风险。本质区别:TDE仅保护“静态数据”,处理阶段仍为明文;全密态数据库实现“数据全生命周期加密”,包括计算过程,从根本上防止内部泄露。5.动态数据脱敏是如何实现“按用户角色返回不同查询结果”的?请结合资源标签与脱敏函数说明其工作流程。答:动态数据脱敏通过以下流程实现角色差异化返回:1.资源标签:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论