GPORCA學習筆記(0)——GPORCA編譯及源碼分析(更新ing)

1 簡介

GPORCA是開源項目greenplum的下一代優化器,裏面借鑑了Cascades Optimizer方式實現的一套優化器,ORCA實現了Enforcer機制、並行優化、優化退出機制、完整的測試以及對Cost Model不斷學習改進框架。下面主要是學習優化框架是如何實現,以及並行優化的邏輯。

2 ORCA優化器主要代碼學習

2.1 簡單編譯

  • 安裝cmake

    wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz
    tar -zxvf cmake-3.5.2.tar.gz
    cd cmake-3.5.2
    ./configure --prefix=/yournamedir/cmake
    make
    make install
    export PATH=/yournamedir/cmake/bin:$PATH

    如果是mac,直接brew install cmake即可。

  • 編譯gp-xerces

    cd ~
    git clone https://github.com/greenplum-db/gp-xerces
    cd gp-xerces
    mkdir build
    cd build
    ../configure --prefix=/yournamedir/gp-xerces_home
    make -j 32
    make install

  • 編譯gporca

    cd ~
    git clone https://github.com/greenplum-db/gporca.git
    cd gporca
    mkdir build
    cd build
    cmake -D CMAKE_BUILD_TYPE=DEBUG \
    -D CMAKE_INSTALL_PREFIX=/yournamedir/gporca_home \
    -D GPOS_INCLUDE_DIR=/yournamedir/gporca_home/include \
    -D GPOS_LIBRARY=/yournamedir/gporca_home/lib/libgpos.so \
    -D XERCES_INCLUDE_DIR=/yournamedir/gp-xerces_home/include \
    -D XERCES_LIBRARY=/yournamedir/gp-xerces_home/lib/libxerces-c.so ../
    make -j 32
    make install

    如果是mac,則將.so改爲.dylib

    cmake -D CMAKE_BUILD_TYPE=DEBUG \
    -D CMAKE_INSTALL_PREFIX=/yournamedir/gporca_home \
    -D GPOS_INCLUDE_DIR=/yournamedir/gporca_home/include \
    -D GPOS_LIBRARY=/yournamedir/gporca_home/lib/libgpos.dylib \
    -D XERCES_INCLUDE_DIR=/yournamedir/gp-xerces_home/include \
    -D XERCES_LIBRARY=/yournamedir/gp-xerces_home/lib/libxerces-c.dylib ../

2.2 引擎(engine目錄)

CEngine實現

2.3 並行優化(search目錄)

CJob&CScheduler調度

2.4 操作符(operator)

Operators

2.5 優化規則(xforms)

優化rule

3

系列文章
* GPORCA學習筆記(0)——GPORCA編譯及源碼分析
* GPORCA學習筆記(1)——Visual Studio Code Debug GPORCA

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章