某用户表的 email 字段很长,数据库管理员希望只对 email 前若干个字符建立前缀索引,以减少索引空间。但如果前缀长度过短,大量不同邮箱的前缀相同,过滤效果会明显变差。关于前缀索引的理解,较合理的是()。
第 707 题
按年份、批次和题号整理数据库系统工程师题目。进入详情页可查看答案解析、考点标签和相关题目。
某用户表的 email 字段很长,数据库管理员希望只对 email 前若干个字符建立前缀索引,以减少索引空间。但如果前缀长度过短,大量不同邮箱的前缀相同,过滤效果会明显变差。关于前缀索引的理解,较合理的是()。
某事务执行范围查询时,数据库既要锁住已经存在的索引记录,又要防止其他事务在相邻范围间隙中插入新记录,从而降低幻读风险。若一个锁同时覆盖记录本身和记录前后的范围间隙,较接近()。
事务 T1 查询某个分数范围内的学生记录,并希望在事务提交前这个范围内不要被其他事务插入新的记录。数据库除了锁住已有记录,还可能锁住索引记录之间的范围间隙,以阻止其他事务在该范围内插入新行。这种锁更接近()。
某查询使用联合索引定位到一批候选记录后,数据库可以在扫描索引时先利用索引中已有的条件继续过滤一部分记录,再决定是否回表读取完整数据行。这个优化思路更接近()。
事务 T1 已锁住订单表中的记录 A,正在等待记录 B;事务 T2 已锁住记录 B,又在等待记录 A。两个事务都不主动释放自己已经持有的锁,系统需要检测并回滚其中一个事务才能继续。这个场景更接近()。
某数据库在普通 SELECT 查询时,可以读取事务开始时可见的数据版本;但执行 SELECT ... FOR UPDATE 或 UPDATE 时,需要读取并锁定最新记录,以便后续修改。关于这两类读取方式,下列说法较准确的是()。
某数据库系统在并发更新订单数据时,如果直接对整张订单表加锁,管理简单但会阻塞更多事务;如果只锁定被修改的少量订单记录,并发能力通常更好,但锁管理开销也会增加。这里讨论的主要是数据库锁的()。
某用户表有 100 万行数据,其中 gender 字段只有“男、女、未知”几个取值,而 user_id 字段几乎每行都不同。数据库管理员在评估哪些列更适合建立普通查询索引时,通常会更关注列的选择性。关于索引选择性,下列说法较合理的是()。
某查询只需要返回字段 A 和字段 B,而数据库中已有联合索引 (A, B)。在执行查询时,如果仅通过该索引就能取得所需字段,而不必再访问数据表记录,这种情况通常称为()。
某报表系统每天都要统计大量订单明细,涉及多表连接和聚合计算。为了减少每次查询都重新计算的成本,数据库预先保存了聚合后的查询结果,并按计划刷新。该设计更接近()。
某业务操作需要同时更新订单库和库存库。为了避免一个库提交成功、另一个库回滚导致数据不一致,系统引入协调者,先询问各参与者是否可以提交,确认都准备好后再统一通知提交。该机制更接近()。
数据库事务执行过程中,系统既要能在事务回滚时撤销已经做过的修改,也要能在系统崩溃恢复时把已提交事务的修改重新做出来。关于 Undo 日志和 Redo 日志,下列说法较合理的是()。
数据库为订单表的下单时间字段建立索引后,经常需要查询“某一天到某一天之间”的订单记录。相比只适合快速等值定位的哈希索引,B+ 树索引更适合这类范围查询,主要原因是()。
某表在 `name` 字段上建立了普通 B+ 树索引。查询 `WHERE name LIKE 'abc%'` 时,可以从索引有序前缀定位范围;但查询 `WHERE name LIKE '%abc'` 或 `LIKE '%abc%'` 时,优化器可能无法有效利用该索引。主要原因是()。
数据库并发控制中,某事务在第一阶段只能申请和获得锁,不能释放锁;一旦开始释放某个锁,就进入第二阶段,此后不能再申请新的锁。该协议通常用于保证并发调度满足哪一类性质?
某数据库表经常按订单编号做等值查询,也会偶尔查询某个时间范围内的订单。如果索引结构只根据键值计算哈希位置,能很快定位等值匹配,但不能按键值顺序连续扫描。关于这种索引的理解,哪一项更准确?
某订单表按年累计到数亿行,查询经常按月份筛选历史订单,归档也多按月份进行。数据库管理员把订单表按时间范围拆成多个逻辑分区,查询时可只扫描相关分区。该设计主要利用了()。
某业务系统在高峰期页面响应变慢。数据库管理员开启慢查询日志,记录执行时间超过阈值的 SQL 语句、扫描行数和执行时间,便于后续定位优化。慢查询日志主要用于()。
某数据库在事务并发执行时,为读操作提供某个时刻的数据版本,使普通查询不必总是等待正在修改数据的事务释放锁。该机制主要体现了()。
数据库系统定期把内存中的脏页写回磁盘,并在日志中记录检查点信息。系统崩溃后,恢复过程可以从较近的检查点附近开始分析,而不必从很早的日志位置重新扫描。检查点的主要作用是()。
某系统希望普通客服只能看到客户编号、姓名和服务等级,而不能直接看到身份证号、余额等敏感字段。数据库管理员基于原表创建一个只包含部分列的虚表,并授权客服查询该对象。该对象通常是()。
某数据库周日做一次全量备份,周一到周三每天做增量备份。周三晚发生故障,需要尽量恢复到周三备份后的状态。一般应先恢复(),再按时间顺序恢复后续增量备份。
事务 T1 先锁订单表再锁库存表,事务 T2 先锁库存表再锁订单表。在并发执行时,两个事务可能互相等待对方释放资源。为降低这种死锁风险,较合理的设计是()。
某查询语句执行很慢,表上虽然建立了索引,但 DBA 不想只凭感觉判断优化器是否真的使用了该索引,而是希望查看访问路径、扫描方式和连接顺序。较合适的做法是()。
某表建立联合索引 `(department_id, status, create_time)`。如果查询条件跳过 department_id,只按 status 过滤,优化器可能无法充分利用该联合索引的前导列。这个现象主要与()。
某系统采用主库写入、从库读取的读写分离架构。用户刚提交订单后立即查询订单详情,偶尔发现页面暂时查不到刚写入的数据。造成这种现象的常见原因是()。
订单表中保存客户编号,客户编号应当来自客户表中已经存在的客户记录。为了避免订单引用一个不存在的客户,数据库设计中通常应设置()。
查询用户表和订单表时,开发人员使用 LEFT JOIN,希望保留没有订单的用户。但他又在 WHERE 子句中写了 orders.status = 'paid',结果没有订单的用户被过滤掉了。较准确的解释是()。
某查询只需要返回 user_id、user_name 两列,并按 status 条件过滤。数据库中存在联合索引(status, user_id, user_name),优化器可以直接从该索引中取得过滤条件和返回列。这个索引之所以可能提高查询效率,主要是因为()。
某表在 create_time 字段上建立了索引,但查询条件写成 DATE(create_time) = '2026-06-02',优化器可能无法直接利用该字段上的普通索引。主要原因是()。
银行转账时,需要从 A 账户扣款并给 B 账户加款。如果扣款成功后系统故障,而加款没有完成,数据库应回滚已完成操作。这个要求主要体现了事务的()。
在学生选课系统中,一个学生可以选择多门课程,一门课程也可以被多个学生选择。把这个 ER 模型转换为关系数据库表时,通常应该()。
在学生表中,学号被设计为主键。数据库要求每个学生的学号唯一,并且不能为空。这样设计的主要目的是()。
关系 R 有 12 个元组,关系 S 有 8 个元组。若对 R 和 S 做笛卡尔积 R×S,结果关系的元组数为()。
关系模式 R(A,B,C,D),函数依赖集 F={A→B,B→C,C→D}。属性集 A 的闭包 A+ 为()。
在 SQL 查询中,如果要对分组后的统计结果进行筛选,例如筛选订单数大于 10 的客户,应使用哪个子句?
数据库事务一旦提交,其对数据库的修改即使在系统故障后也应能够保存下来。该特性称为()。
在关系数据库规范化中,若一个关系模式已经满足第二范式,并且非主属性不传递依赖于候选码,则该关系模式通常满足哪一种范式?
数据库系统中,为了提高范围查询和等值查询效率,常使用一种多路平衡查找树结构作为索引。关系数据库中常见的索引结构是?
数据库并发控制中,为减少脏读、不可重复读和幻读等问题,需要设置事务的哪一类属性或机制?
在 SQL 查询中,如果需要对分组聚合后的结果进行筛选,例如筛选 COUNT(*) 大于 10 的分组,通常应使用哪个子句?
关系数据库中,用于唯一标识表中每一行记录的属性或属性组通常称为什么?
数据库事务具有原子性、一致性、隔离性和持久性,这四个特性通常简称为什么?
数据库事务的隔离性主要用于解决哪一类问题?
在关系数据库中,为经常作为查询条件且选择性较高的列建立索引,主要目的是什么?