postgresql cstore_fdw性能測試


據介紹,cstore_fdw實現了 PostgreSQL 數據庫的列式存儲。列存儲非常適合用於數據分析的場景,數據分析的場景下數據是批量加載的。
這個擴展使用了Optimized Row Columnar (ORC)數據存儲格式,ORC改進了Facebook的RCFile格式,帶來如下好處:

壓縮:將內存和磁盤中數據大小削減到2到4倍。可以擴展以支持不同壓縮算法。
列投影:只提取和查詢相關的列數據。提升IO敏感查詢的性能。
跳過索引:為行組存儲最大最小統計值,並利用它們跳過無關的行。

其實官方自測性能也最多就提升了1倍,大多數在10%到50%之間(這里也有一個測試:http://blog.chinaunix.net/uid-20726500-id-4325901.html,不過LZ是根據實際生產場景進行的)。趁着假期對比各基於SQL的數據庫平台,順帶測一下。

注:pg目前本身沒有列式存儲特性(只有基於pg的純粹列式模式pg),倒是有提交的patch,可以參考https://yq.aliyun.com/articles/691878,但是沒有被合並。

安裝

從https://github.com/citusdata/cstore_fdw下載最新版本,例如cstore_fdw v1.6.1,支持pg 11.5。

安裝protobuf-c,如下:

yum install protobuf-c-devel

一開始某台測試機器因為不能訪問外網,下載了protobuf-c-compiler和protobuf源碼進行安裝。好不容易安裝好了,但是最后安裝cstore_fdw本身時,遇到Unrecognized syntax identifier "proto3". This parser only recognizes "proto2"(這里有個未經驗證的解決方法:https://blog.csdn.net/AmbitiousRuralDog/article/details/80774518),罷了,最后仍然回去使用yum安裝了。
然后編譯cstore_fdw即可。如下:
postgresql.conf中增加
shared_preload_libraries 配置,如下:
shared_preload_libraries = 'cstore_fdw'    # (change requires restart)

 測試:

-- load extension first time after install
CREATE EXTENSION cstore_fdw;

-- create server object
CREATE SERVER cstore_server FOREIGN DATA WRAPPER cstore_fdw;

-- 創建測試表,具體可以參考github官網

CREATE FOREIGN TABLE xxx_FDW
(
-- 字段列表
)
SERVER cstore_server
OPTIONS(filename '/disk01/cstore/xxx_FDW.cstore',compression 'pglz');


-- 執行SQL(多表關聯,只有一張大表是cstore,其他都是普通pg表)

最后效果比greenplum和postgresql都慢了N倍(不管是否壓縮,10/11均如此),可能不太適合我們的場景(官網的場景和上面網上的都是單表統計)。

附protobuf-c源碼安裝過程:
https://github.com/protocolbuffers/protobuf
下載2.6.0,然后正常編譯。
tar zxvf protobuf-2.6.0.tar.gz
cd protobuf-2.6.0
./configure --prefix=/usr/  #必須在/usr下,不能/usr/local,否則最后install會提示必須要以/usr/lib結尾
make
sudo make install/etc/ld.so.conf 中添加一行: /usr/lib,保存退出
/sbin/ldconfig -v
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig #這一步不執行會提示找不到protobuf

https://github.com/protobuf-c/protobuf-c/releases
下載1.2.1,大多數要求protobuf 2.6.0以上。
./configure --prefix=/usr/local
make & make install
這樣就安裝完成了,只是最后報了上面的錯誤。

除了CSTORE外,還有HDFS\oss_fdw外置接口(這樣存儲就天然具備了HA特性),參見https://github.com/EnterpriseDB/hdfs_fdw、https://www.alibabacloud.com/help/zh/doc-detail/44461.htm。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM