答案在主页。
一、 事务与并发控制 (8题)
关于多版本并发控制,以下哪种场景下,MVCC机制仍可能产生“幻读”问题?
A. 在READ COMMITTED隔离级别下,事务A读取一个范围的数据后,事务B在该范围内插入新记录并提交,随后事务A再次读取相同范围。
B. 在REPEATABLE READ隔离级别下,使用快照隔离的实现(如InnoDB),事务A读取一个范围的数据后,事务B在该范围内插入新记录并提交,随后事务A再次读取相同范围。
C. 在SERIALIZABLE隔离级别下,使用基于锁的实现。
D. MVCC机制在任何隔离级别下都不会产生幻读。在基于时间戳排序的并发控制协议中,事务T1的时间戳为100,事务T2的时间戳为200。T1先执行
write(X),随后T2执行read(X)。已知X的W-timestamp初始为50。根据基本TO规则,会发生什么?
A. T2的read(X)被允许,并将X的R-timestamp更新为200。
B. T2的read(X)被回滚,因为200 > 100。
C. T2的read(X)被拒绝,T2被中止并赋予新时间戳后重启。
D. T2的read(X)被延迟,直到T1提交或中止。关于两阶段锁协议,以下说法正确的是?
A. 严格两阶段锁要求事务在释放任何一个排他锁之前必须进入收缩阶段。
B. 强两阶段锁要求事务在提交或中止前,不能释放任何锁。
C. 两阶段锁协议可以保证冲突可串行化,但无法避免死锁。
D. 以上说法都正确。在数据库恢复机制中,检查点的作用是?
A. 确保在检查点时刻,所有已提交事务的修改都已持久化到磁盘。
B. 作为系统崩溃后重做和撤销操作的起点,减少恢复时需要扫描的日志量。
C. 强制将所有脏页写回磁盘。
D. 标记一个所有活跃事务都已提交的时间点。假设使用
WAIT-DIE机制预防死锁。事务T1(时间戳10)持有锁L,事务T2(时间戳20)请求锁L。根据WAIT-DIE规则,会发生什么?
A. T2等待T1释放锁L。
B. T2被中止(Die)。
C. T1被中止(Die)。
D. 这取决于锁L的模式(共享或排他)。以下哪种隔离级别在标准SQL定义中,允许“不可重复读”但禁止“脏读”?
A. READ UNCOMMITTED
B. READ COMMITTED
C. REPEATABLE READ
D. SERIALIZABLE在
SERIALIZABLE隔离级别下,如果一个数据库系统使用“谓词锁”来实现,其主要目的是防止什么现象?
A. 脏写
B. 丢失更新
C. 幻读
D. 不可重复读关于“日志先行”规则,以下描述最准确的是?
A. 事务提交前,其所有日志记录必须被写入稳定的日志存储器。
B. 在修改数据库页面之前,对应的日志记录必须已写入稳定的日志存储器。
C. 在事务提交操作被记录到日志之前,该事务的所有日志记录必须已写入稳定的日志存储器。
D. 以上都是WAL规则的正确表述。
二、 查询处理与优化 (7题)
对于连接操作 R ⋈ S, 已知
|R| = 10,000,|S| = 1,000, 每个数据页可存放100个R元组或20个S元组。缓冲区有52个页面。使用基于块的嵌套循环连接,将S作为外表,最少需要多少次磁盘I/O?(假设连接选择率为1,且结果集无需写回)
A. 1000 + ceil(1000/51) * 10000 ≈ 1000 + 20 * 10000 = 201,000
B. 1000 + ceil(10000/51) * 1000 ≈ 1000 + 196 * 1000 = 197,000
C. 10000 + ceil(10000/51) * 1000 ≈ 10000 + 196 * 1000 = 206,000
D. 1000 + ceil(1000/(52-1)) * 10000 ≈ 1000 + 20 * 10000 = 201,000给定关系R(A, B, C)和S(C, D, E),以及以下统计信息:
T(R)=10,000,V(R, C)=500,T(S)=2,000,V(S, C)=200。假设C是连接属性,且值均匀分布。使用基于直方图(等宽)的成本估算,连接R ⋈ S的中间结果大小约为多少?
A. (T(R) * T(S)) / max(V(R, C), V(S, C)) = (100002000)/500 = 40,000
B. (T(R) * T(S)) / V(R, C) = (100002000)/500 = 40,000
C. T(R) * (T(S)/V(S, C)) = 10000 * (2000/200) = 100,000
D. 由于缺乏连接选择率信息,无法估算。在基于代价的优化器中,通常使用“左侧深度树”而不是“右侧深度树”或“浓密树”来规划连接顺序,主要原因不包括以下哪项?
A. 左侧深度树能更好地利用流水线执行,减少中间结果的物化开销。
B. 左侧深度树的搜索空间远小于浓密树,优化器规划更快。
C. 左侧深度树通常能产生比右侧深度树更优的物理计划。
D. 所有数据库系统的连接算法都只支持左侧深度树的执行模式。对于查询
SELECT * FROM t WHERE a > 10 AND a < 100 AND b = ‘xyz’, 表t在(a, b)上有一个复合索引。优化器决定使用索引范围扫描。最有效的扫描方式是什么?
A. 在索引中定位到第一个a > 10且b=’xyz’的条目,然后扫描直到a >= 100。
B. 在索引中定位到第一个a > 10的条目,然后扫描并过滤b=’xyz’的条目,直到a >= 100。
C. 在索引中定位到b=’xyz’的第一个条目,然后扫描并过滤a > 10 AND a < 100的条目。
D. 这取决于索引的键顺序是(a, b)还是(b, a)。“物化视图”与普通视图在查询优化中的关键区别在于?
A. 物化视图存储了定义查询的实际结果,可用于重写查询以加速。
B. 物化视图支持更多的DML操作。
C. 物化视图的定义更复杂。
D. 物化视图不占用存储空间。在应用“将选择操作下推”的启发式优化规则时,以下哪种情况该规则可能不适用或无效?
A. 选择条件涉及聚集函数,例如σ_{AVG(salary) > 5000}(employee)。
B. 选择操作位于连接操作下方。
C. 选择条件中的属性在子查询中不可用。
D. 以上所有情况。“索引条件下推”主要优化了哪种操作的性能?
A. 在仅使用索引即可满足查询时,避免访问表数据。
B. 将WHERE子句中的部分条件在存储引擎层进行过滤,减少回表次数。
C. 将多个索引的扫描结果进行合并。
D. 在构建索引时对数据进行预过滤。
三、 存储引擎与索引 (6题)
LSM-Tree 相比 B+Tree 的一个主要优势是?
A. 点查询延迟更低。
B. 范围查询效率更高。
C. 顺序写入吞吐量极高。
D. 内存占用更小。在 InnoDB 存储引擎中,关于“自适应哈希索引”的描述,错误的是?
A. 它由数据库自动创建和管理,用户无法显式创建或删除。
B. 它基于 B+Tree 索引的常用搜索键值构建。
C. 它对于等值查询和范围查询都有显著加速效果。
D. 在负载模式频繁变化或内存紧张时,它可能带来额外开销。“覆盖索引”是指?
A. 一个索引包含了查询中涉及的所有列。
B. 一个索引包含了表中所有的列。
C. 一个索引被另一个更大的索引所包含。
D. 使用多个索引来覆盖一个查询的所有条件。在数据库系统中,“预写式日志”和“影子页面”是两种不同的恢复技术。它们的主要区别在于?
A. WAL 记录的是逻辑操作,而影子页面记录的是物理变化。
B. WAL 需要额外的日志文件,而影子页面不需要。
C. WAL 在事务提交时通常只需持久化日志,而影子页面需要立即写回数据页。
D. WAL 无法用于介质恢复,而影子页面可以。关于 B+Tree 和 B-Tree 的区别,以下说法正确的是?
A. B+Tree 的内部节点也存储数据记录。
B. B+Tree 的所有数据记录都存储在叶子节点,并且叶子节点通过指针链接。
C. B-Tree 的查询性能在任何场景下都优于 B+Tree。
D. B+Tree 的树高通常比同等数据的 B-Tree 更高。“填充因子”在索引创建中用于控制什么?
A. 索引叶子节点中预留的空间比例,用于后续的插入操作,减少页分裂。
B. 索引数据的压缩率。
C. 内存中缓存索引页的数量。
D. 索引创建过程中使用的临时磁盘空间大小。
四、 分布式与高级主题 (9题)
在分布式数据库的“两阶段提交”协议中,“协调者故障”在哪个阶段可能导致参与者资源永久阻塞?
A. 阶段一:投票阶段,协调者发送prepare请求后故障。
B. 阶段二:提交阶段,协调者发送部分commit指令后故障。
C. 以上两个阶段都可能。
D. 2PC协议本身通过超时机制可以完全避免阻塞。根据 CAP 定理,对于一个跨地域部署的、要求强一致性的分布式数据库系统,当发生网络分区时,它必须?
A. 牺牲可用性,拒绝部分或全部客户端的请求。
B. 牺牲一致性,允许不同分区返回不同的数据。
C. 牺牲分区容忍性,将系统退化为单点系统。
D. 可以同时保证可用性和一致性。“向量化执行引擎”相较于传统的“火山模型”执行引擎,其性能优势主要来源于?
A. 减少了函数调用开销,利用 CPU SIMD 指令进行批量处理。
B. 采用了更优的查询计划。
C. 使用了更多的索引。
D. 减少了网络传输开销。在“基于共识的复制”(如 Raft/Paxos)中,“领导选举”过程的目的是?
A. 确定哪个副本拥有最新的数据。
B. 在多个服务器中选出一个唯一的领导者,由它来协调所有的写请求,简化管理并保证操作顺序。
C. 分配客户端的读请求到负载最低的副本。
D. 检测并移除故障的副本。“NewSQL”数据库系统(如 Google Spanner, CockroachDB)宣称同时提供了 SQL 接口、水平扩展和强一致性,其底层最核心的技术通常是?
A. 主从异步复制。
B. 分布式事务的两阶段提交。
C. 全局时钟(如 TrueTime)或混合逻辑时钟,结合分布式共识协议。
D. 最终一致性的数据分区。“物化视图”的“增量维护”面临的主要挑战是?
A. 计算初始物化数据成本高。
B. 当底层基表发生插入、删除、更新时,高效地推导出对物化视图的增量修改。
C. 物化视图的存储成本。
D. 物化视图的查询语法复杂。“时序数据库”针对时间序列数据优化,其特殊的存储和索引设计通常不包括?
A. 将时间戳作为主键或首要分区键。
B. 使用列式存储,并对数据块进行高效压缩(如 Gorilla, Delta-of-Delta 编码)。
B. 为每个时间序列创建单独的 B+Tree 索引。
D. 支持数据降采样和自动过期策略。在“内存数据库”中,为了保证持久性,通常采用的机制是?
A. 定期将整个数据库快照写入磁盘。
B. 采用非易失性内存。
C. 通过预写日志和定期检查点将更改持久化到磁盘。
D. 依赖操作系统虚拟内存的交换机制。“图数据库”使用免索引邻接作为其核心存储模型,这意味着?
A. 节点直接存储指向其关联边和邻接节点的物理指针或 ID,遍历关系速度快。
B. 完全不需要任何形式的索引。
C. 所有查询都通过全局索引完成。
D. 数据以巨大的邻接矩阵形式存储。
参考来源
- 【光子 AI 出品】《AI 大模型 Agent 面试题30道,超详细(➕必过答案解析) II 》
- 做了100件事,老板只回一句:和业务有啥关系?
- 史上最全 50 道 Redis 面试题
- ccmusic-database效果展示:麦克风实时录音→30秒截取→5类预测全链路演示
- 1.11 python 面试题 30道
- 零基础玩转ccmusic-database:16种音乐流派一键识别