建设厅投诉网站素马设计官网
建设厅投诉网站,素马设计官网,网站设计活动主题,诺邯郸网站建设Part14-Query Planning Optimization I
SQL is Declarative#xff0c;只告诉想要什么而不需要说怎么做。
IBM System R是第一个实现query optimizer查询优化器的系统 Heuristics / Rules 条件触发 静态规则#xff0c;重写query来remove 低效或者愚蠢的东西#xf…Part14-Query Planning Optimization I
SQL is Declarative只告诉想要什么而不需要说怎么做。
IBM System R是第一个实现query optimizer查询优化器的系统 Heuristics / Rules 条件触发 静态规则重写query来remove 低效或者愚蠢的东西需要examine catalog看一些schema来判断不需要具体data。 Cost-based Search 使用一个代价模型来估测执行一个查询计划的代价需要以某种方式去查看数据枚举该SQL所有可能的不同查询方案以某种智能的方式去除多余或者愚蠢的方案。
applcation → sql rewriter → parser → binder(负责把sql查询中引用的命名对象转换为某种内部的标识符internal identifier) → tree rewriter → optimizer →
sql query → sql query → abstract syntax Tree → (name→internal ID) → Logical Plan(high level查询要干嘛) → Logical Plan → Physical Plan(DB 实际执行查询语句的方式) Logical VS. Physical Plans
逻辑计划相当于查询中的关系代数表达式比如查询计划树种包含了这些关系代数的符号但是不会说具体要用哪种方式和算法。
物理计划是实际上用来定义查询计划种执行方案的地方具体要再查询计划种如何使用这些不同的operator具体哪个index
Query Optimization is NP-HARD Relational Algebra Equivalences
等价关系代数以此来对查询计划进行等价的操作和转换所谓的等价就是如果两个关系代数表达式能够得到相同的元组集合那就认为等价。
Predicate Pushdown
filter before the join 尽可能早过滤重新排序 让最具有选择性地先进行过滤拆分复杂的predicate 然后push down Projection PushDown
尽早投影 以创建更小的tuple 减少中间结果对行存比较关键列存不重要。在join之前引入一个projection操作减少列信息 SELECT A1.*FROM A AS A1 JOIN A AS A2ON A1.id A2.id;
# 等价于中间做了个无意义的join
select * from A;
# 是不是可以用这样的例子来测试一个DB的查询优化还可以忽略不必要的projections
select * from A AS A1where exists(select val from A AS A2where A1.id A2.id);
# equal to
select * from A;Merge Predicates
SELECT * FROM AWHERE val BETWEEN 1 AND 100OR val BETWEEN 50 AND 150;
# rewrite
SELECT * FROM AWHERE val BETWEEN 1 AND 150;查看catalog比如写一个主键≠null或者写主键null都会访问catalog 根据scheme进行rewrite
n-way join : 可能有 4 n 4^n 4n种
Cost Estimation
一个查询需要多久
CPUsmall costtough to estimateDiskblock transfersMemory: Amount of DRAM usedNetwork: 分布式情况下考虑rtt messages
真正知道物理代价只有通过去运行但是代价太高所以使用代价模型估测而预估查询的成本是通过在内部维护表的相关信息来做的。
Statistic
internal statistic维护索引、表、元组中的值的有关的元数据
Manual invocations:
pg/SQL LITE:ANALYZEOracle/Mysql: ANALYZE TABLESQL Server: UPDATE STATISTICSDB2: RUNSTATS
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88581.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!