自适应计划与 CBO 与 RBO

共 18 题
#

1. MySQL 8.0 自适应哈希索引的运行时构建?

A AHI 由 InnoDB 运行时根据热点等值访问自动构建,占用 buffer pool 内存且只对等值查询有效,高并发下可能成为争用热点 ✓ 正确答案
B AHI 的数据存储在磁盘上
C AHI 可以加速范围扫描
D AHI 需要 DBA 手动创建索引
#

2. PostgreSQL 中自适应连接(Adaptive Join)的应用场景?

A PG 的 join 方法在执行中可动态变化
B PostgreSQL 没有执行期切换 join 方法的机制,其自适应体现在 generic/custom plan 选择与统计驱动的计划更新 ✓ 正确答案
C PG 执行中可在 Hash Join 与 Nested Loop 间自动切换
D SQL Server 的 Adaptive Join 只在编译期决定 join 方法
#

3. PostgreSQL 的自适应优化?

A autovacuum 不会触发 ANALYZE
B PG 支持执行中切换 join 方法
C JIT 只用于排序操作
D PG 的自适应优化包括 generic/custom plan 选择、autovacuum 统计更新与 JIT 编译,但计划生成后执行中不会改变 ✓ 正确答案
#

4. CBO 的统计信息依赖,统计陈旧如何影响执行计划?

A CBO 不完全依赖统计信息
B join 方法选择与统计无关
C 并行度决策不依赖统计
D 统计陈旧会使扫描方式、join 顺序与方法全部按错误行数决策,典型于批量写入后未 ANALYZE,需用 EXPLAIN ANALYZE 定位并刷新 ✓ 正确答案
#

5. CBO 的转换规则,子查询展开、谓词下推、JOIN 顺序?

A 子查询展开会固定 join 顺序
B optimizer_switch 控制 PG 的改写规则
C 转换规则(子查询展开、谓词下推、视图合并)先改写计划空间,再由代价搜索选择最优计划,改写不全会锁死 join 顺序 ✓ 正确答案
D 改写发生在执行阶段
#

6. CBO(Cost-Based Optimizer)的工作原理,基于代价模型选择最优计划?

A CBO 通过统计信息与代价模型比较候选计划的总代价选优,"最优"是模型意义的,受统计失真与参数失配影响 ✓ 正确答案
B 代价评估发生在执行阶段
C CBO 不依赖统计信息
D CBO 保证找到全局最优计划
#

7. PostgreSQL 的 GEQO(Genetic Query Optimizer),连接数 > 12 时启用?

A GEQO 保证找到最优连接顺序
B 表连接数超过 geqo_threshold(默认 12)时 PG 用遗传算法近似搜索 join 顺序,结果近优且存在随机性 ✓ 正确答案
C geqo_threshold 默认值为 3
D GEQO 只影响单表查询
#

8. RBO(Rule-Based Optimizer)的过时,Oracle 10g 后完全弃用?

A RBO 按固定规则选择计划、不参考统计,Oracle 10g 起 CBO 成为默认且 RBO 路径被弃用,但规则性改写仍有遗留 ✓ 正确答案
B RBO 会随数据分布自动调整计划
C 现代优化器完全没有任何规则性改写
D Oracle 19c 仍默认使用 RBO
#

9. adaptive plans 的代价/收益与生产环境稳定性取舍

A 自适应计划只在编译期生效
B 自适应计划能在估算失准时运行时自愈,但增加计划不确定性与调试成本,关键语句需监控并固定计划 ✓ 正确答案
C 强制计划会增强自适应能力
D 自适应计划总是提升稳定性
#

10. MySQL 的 Optimizer Switch,开启/关闭优化规则?

A optimizer_switch 以特性开关形式控制优化规则(如 semijoin、materialization、ICP),修改后需用 EXPLAIN 与 optimizer trace 验证 ✓ 正确答案
B optimizer trace 无法查看规则是否被采纳
C 该变量只能全局设置不能会话级设置
D 开关不影响任何计划选择
#

11. CBO 与 RBO 的对比?

A CBO 的计划比 RBO 更可预测
B RBO 使用统计信息决策
C CBO 不依赖统计信息
D RBO 按固定规则决策、可预测但僵化,CBO 按统计与代价自适应但依赖统计质量,现代数据库以 CBO 为主 ✓ 正确答案
#

12. PostgreSQL geqo_threshold?

A geqo_threshold 默认 12,表数超过后 PG 用 GEQO 近似搜索,调大提高搜索精度但规划时间可能指数增长 ✓ 正确答案
B GEQO 与连接数完全无关
C 调小 geqo_threshold 会提高计划质量
D 默认值为 4
#

13. 自适应计划(Adaptive Plan)的概念,执行过程中根据实际统计调整计划?

A MySQL 8.0 支持执行期 join 方法切换
B 自适应计划在执行期用运行时反馈(实际行数、内存)调整策略,SQL Server 与 Oracle 有实现,MySQL 与 PG 无执行期计划切换 ✓ 正确答案
C 自适应计划与统计信息无关
D 所有数据库都有自适应计划
#

14. MySQL 自适应哈希索引(AHI)的工作原理与代价,为何仅对热点等值查询有效,其内存开销与不可预测性如何权衡?

A AHI 的构建时机可由 DBA 精确控制
B AHI 支持范围扫描加速
C AHI 为高频等值访问的 B-Tree 页构建内存哈希索引实现 O(1) 点查,但内存与维护开销不可预测,写密集或扫描型负载可考虑关闭 ✓ 正确答案
D AHI 的数据存储在磁盘
#

15. Oracle 自适应游标共享?

A ACS 强制所有绑定值共用同一计划
B ACS 监控绑定值与执行效果,将游标从 bind-sensitive 升级为 bind-aware,按绑定值所在直方图桶区间选择不同计划 ✓ 正确答案
C ACS 是 MySQL 8.0 的功能
D ACS 与直方图没有任何关系
#

16. CBO 与 Hint 的关系,Hint 是优化器的例外通道还是调优反模式?统计信息失真时如何用 Hint 纠正计划,其维护风险与替代手段是什么?

A Hint 是绕过代价评估的例外通道,应先修统计再考虑 Hint,长期依赖 Hint 会锁死计划并掩盖根因 ✓ 正确答案
B Hint 永远优于统计调优
C Hint 失效不会影响任何性能
D Hint 应作为每个 SQL 的常规配置
#

17. Statistics 卡(pg_statistic / sys.stats)的更新策略与自动采样阈值

A SQL Server 的统计阈值与表行数无关
B PG 按"修改行数 > threshold+scale×行数"触发自动 ANALYZE,SQL Server 小表阈值约 500+20%×行数、2016+ 大表用动态阈值 ✓ 正确答案
C PG 的 scale_factor 默认值为 0.5
D 两库都没有自动统计更新
#

18. RBO 的常见规则,基于启发式的表顺序、驱动表与索引选择规则有哪些,相比 CBO 它在统计信息缺失时为何仍有用武之地?

A 现代 CBO 完全抛弃了 RBO 的一切经验
B RBO 依赖统计信息决策
C RBO 以访问路径等级、受限表驱动、索引优先等启发式规则决策,无需统计即可给出经验合理计划,但无法处理数据分布差异 ✓ 正确答案
D RBO 能正确处理倾斜分布