資料庫中表儲存的模式對性能的影響
HEAP表 | 行存 | 不壓縮 |
行存 |
AO表 | (orientation=row) | 可壓縮 |
(appendonly=true) | 列存 | (compresstype=zlib,COMPRESSLEVEL=5) |
(orientation=column) |
類型 | 建立說明 | 特點 |
堆表(heap) | 預設或appendonly=false | 表中資料不能壓縮,堆表隻能是行存表,适合資料經常更新,删除,的oltp類型的負載,通常表中的資料量不大,适合用作次元表 |
追加優化表 | appendonly=true | 表中資料可以壓縮,通常使用者隻讀類型的查詢,針對資料批量插入做了優化,不推薦以插入單條資料的方式載入資料。适合用于事務表 |
行存表 | 預設或orientation=row | 适合用于oltp類型的工作負載 |
列存表 | orientation=column | 适合用于資料倉庫負載,必須同時制定該表為append optimized,表中資料可以壓縮 |
儲存大小對比
類型 | 檔案 | 堆儲存 | AO表行存 | AO表列存 | AO表行存壓縮 | AO表列存壓縮 |
大小 | 35G | 32G | 34G | 30G | 13G | 6822MB |
建立壓縮表的例子
create table temp with (appendonly = true,orientation = row,compresstype = zlib , COMPRESSLEVEL = 5 ) as select * from pg_tables distributed randomly;
複制
說明
壓縮比例越高在資料庫中的占用大小越小,在查詢資料時減小I/O的開銷。當在查詢資料時解壓的速度大于網絡的傳輸速度,便能提高速度。
複制
GPFDIST 參數設定對性能的影響
參數名 | 說明 |
writable_external_table_bufsize | 控制主執行個體向檔案伺服器發送資料包的大小,預設64kb |
gp_external_max_segs | 控制通路檔案伺服器的執行個體數量,預設64 |
測試環境及測試方法
以下測試的叢集環境
1、伺服器數量20
2、主備執行個體數:160
3、網絡速率:萬兆
複制
gpfdist 導出控制參數writable_external_table_bufsize
檔案大小(MB) | 導出耗時(s) | 速度(MB/s) | 參數值(kb) |
45441 | 201 | 226.07 | 512 |
45441 | 56 | 811.45 | 16384 |
gpfdist 加載控制參數gp_external_max_segs
檔案大小(MB) | 導出耗時(s) | 速度(MB/s) | 參數值(kb) |
45441 | 108 | 420.75 | 20 |
45441 | 59 | 770.19 | 40 |