16 -【cmu15-721】【高级数据库系统】【卡内基梅隆大学】【中英字幕】

1. 查询优化器的目标是找到一个正确的执行计划,而不是最优的执行计划。
2. 查询优化是一个难题,因为它是一个NP完全问题。
3. 查询优化器使用启发式和估算技术来估计执行计划的成本。
4. 查询优化器需要考虑许多设计决策,包括查询重写、关系代数等。
5. 不同的数据系统有不同的优化策略和实现方法。
6. 多个查询同时执行时,可以进行全局优化,以获得更好的性能。
7. 准备语句可以提高查询性能,但需要注意查询计划的稳定性。
8. 提示(hints)和固定优化器版本是保持查询计划稳定性的两种方法。
9. 提示可以告诉优化器如何生成查询计划,而固定优化器版本可以使用旧版本的优化器生成查询计划。
10. 查询计划的稳定性对于数据库性能至关重要,不仅仅是查询速度的快慢。
11. 在查询优化中,动态规划搜索是一种常用的方法,可以找到最佳的查询计划和物理操作符。
12. 查询优化中的一个关键问题是物理数据属性的表示,例如排序和压缩,需要在查询计划中进行额外的处理。
13. Postgres数据库使用遗传算法作为查询优化器的一部分,通过随机搜索和基因交叉来寻找最佳查询计划。
14. 使用高级语言定义查询优化规则和转换,可以更容易地维护和理解查询优化器的代码。
15. 随机搜索和遗传算法是查询优化中常用的方法,可以在较短时间内找到较好的查询计划,但不能保证找到最优解。
16. 在计算机科学中,存在一种叫做优化器生成器的工具,可以通过高级语言定义模式和规则,然后通过特定编译器生成优化器代码。
17. IBM Starburst是最早的优化器生成器之一,后来被用于DB2数据库系统。
18. Volcano和Cascades是基于优化器生成器的系统,它们使用了不同的搜索策略,分别是分层搜索和统一搜索。
19. 分层搜索是一种自底向上的搜索策略,通过一系列规则将逻辑计划转换为物理计划,并使用成本模型进行优化。
20. 统一搜索是一种自顶向下的搜索策略,通过一次性进行所有转换,并使用记忆化技术避免重复计算,以快速找到最优查询计划。