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