AnalyticDB for PostgreSQL は、Greenplum Databaseに基づいて開発され、Alibaba Cloud の細かい拡張機能でさらに強力になっています。 MPP (Massively Parallel Processing) データウェアハウスサービスを提供するための、複数の [グループ]で構成される分散クラウドデータベースです。
ここでは、AnalyticDB for PostgreSQL を使用するためのベストプラクティスを紹介します。 AnalyticDB for PostgreSQL のパフォーマンスを向上させ、インポートプロセスをスピードアップし、コストを削減するために、以下の方法から選択することを推奨します。
圧縮カラムストレージの使用する
更新頻度が低くフィールド数が多いテーブルの場合は、圧縮カラムストレージの使用を推奨します。 この方法では、パフォーマンスを保証しながらも圧縮率を 3 倍まで増加させます。そして、インポート速度も通常より速くなります。
例えば、集計ステートメントにWITH列 (APPENDONLY = true、ORIENTATION =列、COMPRESSTYPE = zlib、COMPRESSLEVEL = 3、BLOCKSIZE = 1048576)
を追加して、圧縮カラムストアテーブルを作成します
具体的な構文に関しては、「CREATE TABLE」をご参照ください。
Nested Loop JOIN を使用する
Nested Loop JOIN はデフォルトでは、 AnalyticDB for PostgreSQL インスタンスで有効ではありません。 少量のデータを含む、または返すのみのクエリでは、パフォーマンスが最適でない可能性があります。
次の SQL ステートメントを例としてご参照ください。
select from T1 join T2 on T1.c1 = T2.c1 where T1.c2 >= '230769548' and T1.c2 < '230769549' limit 100;
この例では、T1 テーブルと T2 テーブルのサイズはどちらも大きくなっています。 選択条件 T1 (T1.c2 >= ‘230769548’
and T1.c2 <‘23432442’)
が大多数のデータレコードをフィルタリングし、LIMIT 節を含んでいます。
その結果、クエリには実際には合計データサイズのわずかな部分のみが含まれます。この場合は、Nested Loop JOIN メソッドが最適です。
You can 次の SET コマンドを実行して、Nested Loop JOIN をアクティブにすることができます。
show enable_nestloop ; enable_nestloop————————- offSET en-USable_nestloop = on;show enable_nestloop ; enable_nestloop————————- onexplain select
from T1 join T2 on T1.c1 = T2.c1 where T1.c2 >= '230769548' and T1.c2 < '23432442' limit 100; クエリプラン————————————————————————— ——————————————————————- Limit (cost=0.26..16.31 rows=1 width=18608) -> Nested Loop (cost=0.26..16.31 rows=1 width=18608) -> Index Scan using T1 on c2 (cost=0.12..8.14 rows=1 width=12026) Filter: ((c2 >= '230769548'::bpchar) AND (c2 < '230769549'::bpchar)) -> Index Scan using T2 on c1 (cost=0.14..8.15 rows=1 width=6582) Index Cond:((c1):: text =(T1.c1):: text)
このクエリプランから、T1 および T2 テーブルは Nested Loop JOIN を採用し、最適なパフォーマンスを実現します。
ORCA オプティマイザの使用方法
AnalyticDB for PostgreSQL は ORCA オプティマイザをサポートしています。 複雑な SQL ステートメントを実行しても結果が不十分な場合、ORCA オプティマイザを試します。
以下の SET コマンドをデータベース接続に実行し、ORCA を有効にします。
EXPLAIN <SQL text>SET optimizer = on;EXPLAIN <SQL text>
前述の例では、ORCA を有効にする前後で、クエリプランで EXPLAIN コマンドが使用されていることがわかります。 この方法では、ORCA が実際に SQL クエリプランを変更したかどうかを確認できます。
圧縮方法の使用方法
HybridDB for PostgreSQL は zlib と RLE の 2 つの圧縮方法をサポートしています。
- RLE は同じデータ値が物理的に連続で保存されているシナリオで威力を発揮します。
- Zlib は他のシナリオにも適用可能です。
圧縮方法は、フィールドレベルまたはテーブルレベルで指定できます。 詳細に関しては、「CREATE TABLE」をご参照ください。
その他の数値型の使用方法
クエリに COUNT の固有値統計演算(DISTINCT)が含まれている場合は、統計フィールドに文字列や数値タイプを使用せずに、他の数値タイプ(整数タイプなど)を使用することを推奨します。この方法により、パフォーマンスを数倍向上できます。
</article>
</main>