本文介紹如何使用儲存引擎Beam。
注意事項
僅儲存彈性模式v7.0.x版本支援Beam儲存引擎。
Beam儲存引擎在儲存彈性模式v7.0.6.2版本中結束公測正式上線,該版本修複了公測中的問題,建議您儘快升級到v7.0.6.2及以上版本。
建立Beam表
使用Beam引擎建立表,需要在SQL語句中指定USING beam配置項。例如,建立一個名為test的Beam表。
CREATE TABLE test(a INT, b INT)
USING beam
DISTRIBUTED BY (a);預設情況下,Beam表會對所有的列使用LZ4 9級壓縮。
指定排序鍵
您可以通過指定排序鍵的方式來指定資料的物理聚集方式。同時Beam會對指定的排序鍵和主鍵列收集最大(Max)或最小(Min)資訊,從而加速包含排序鍵過濾條件的查詢。 例如,SQL語句中包含sale_date='20230715'的條件,則資料基於sale_date列排序會獲得額外的效能收益。
您可以在ORDER BY子句中指定一個或多個排序鍵。Beam表會在後台自動對資料基於排序鍵進行重排序最佳化。
樣本
建立帶排序建的Beam表。
CREATE TABLE beam_example (
id integer,
name text,
ftime timestamp
)
USING beam
DISTRIBUTED BY (id)
ORDER BY(id);向Beam表中寫入10000000行資料,並帶排序鍵過濾條件查詢。
INSERT INTO beam_example
SELECT r, md5((r*random())::text), now() + interval '1 seconds' *(r*random())::int
FROM generate_series(1,10000000)r;SELECT * FROM beam_example WHERE id = 100000;指定壓縮演算法
Beam支援多種壓縮演算法,您可以根據實際業務需要選擇不同的壓縮演算法。Beam支援ZSTD、LZ4、AUTO和GDICT壓縮演算法。
預設壓縮演算法:
核心版本為v7.1.1.4及以上的AnalyticDB PostgreSQL版執行個體,預設使用AUTO 1級壓縮。
核心版本為v7.1.1.4以下的AnalyticDB PostgreSQL版執行個體,預設使用LZ4 1級壓縮。
ZSTD
如果您期望獲得更高的壓縮比,可以使用ZSTD壓縮演算法,但其壓縮和解壓效能較弱於LZ4。
LZ4
擁有極高的壓縮和解壓效能,但是會損失一部分壓縮率。
AUTO
AUTO是Beam自研的自適應的壓縮演算法。對於數值列,根據資料的Layout提供相對於通用壓縮演算法更高的壓縮比和更高的壓縮、解壓效率。對於其他類型,則使用LZ4通用壓縮演算法進行壓縮。
GDICT
GDICT是Beam自研的全域字典編碼。GDICT在低基數列(小於256個值),可以提供極致的壓縮比和解壓效能。同時支援過濾條件下推,在特定的情境下,相對於通用壓縮演算法可以獲得最高100X的掃描效能提升。
樣本
建立一個壓縮演算法為ZSTD 9級壓縮的Beam表。
CREATE TABLE beam_example (
id integer,
name text,
ftime timestamp
) USING beam
WITH(compresstype='zstd', compresslevel=9) ;Auto Optimize
當您的Beam表有多次寫入、更新或刪除操作時,隨著時間的推移,表中會存在大量的到期資料,從而導致掃描效能下降。Auto Optimize是背景資料最佳化進程,會自動對您的Beam表進行到期資料回收,小檔案合并和資料按照排序鍵聚集操作,從而保障查詢效能。一般情況下,該操作都會由後台進程自動完成,您也可以通過OPTIMIZE beam_example;命令手動觸發Optimize。