天天看點

[資料庫基礎]-- CBO and RBO optimizers

1、前言

      CBO是 Cost-based optimizer ,RBO是 Rule-based optimizer 。

2、對比

CBO RBO
定義 基于成本的優化 基于規則的優化
目的 為每個SQL語句提供最便宜的執行計劃 RBO使用一組規則來确定如何執行查詢
支援 Spark sql、Hive、Presto、Mysql 、Oracle和SQL Server 幾乎所有都支援
實作難度 實作困難,以空間換時間 實作容易,但是以時間換空間

附1:Spark 的 TPC-DS 查詢性能測試對比

[資料庫基礎]-- CBO and RBO optimizers
[資料庫基礎]-- CBO and RBO optimizers

附2:Hive 的 TPC-DS 查詢性能測試對比

[資料庫基礎]-- CBO and RBO optimizers

3、注意

Hive CBO   支援的版本:從 Hive-0.14     開始支援,開啟參數---->  hive.cbo.enable=true

4、參考

  • ​​http://www.dba-oracle.com/t_gogala_cbo_oltp1.htm​​
  • ​​http://www.oratable.com/oracle-cbo-rbo/​​
  • ​​https://nirajrules.wordpress.com/2009/06/10/cost-based-optimization-cbo-vs-rule-based-optimization-rbo/​​
  • ​​https://zh.hortonworks.com/blog/hive-0-14-cost-based-optimizer-cbo-technical-overview/​​
  • Spark CBO 介紹​​https://docs.databricks.com/spark/latest/spark-sql/cbo.html​​
  • 傳統CBO介紹:​​http://hbasefly.com/2017/05/04/bigdata%EF%BC%8Dcbo/?nedkjs=truzu1​​
  • Apache calcite 優化器:​​https://matt33.com/2019/03/17/apache-calcite-planner/​​
  • Apache Hive SQL 名詞:​​http://dwgeek.com/apache-hive-explain-command-example.html/​​

繼續閱讀