コード乾物|行存、列存_ヒープ表、AO表性能比較-阿里雲HDB for PostgreSQLベストプラクティス
3088 ワード
本文はアリ雲-雲栖コミュニティに由来し、原文はここをクリックします.
タブ
PostgreSQL,GIS,PostGIS,Greenplum,空間検索,GIST,B-Tree,geohash
背景
『Greenplum行存、列存、スタック表、AO表の原理と選択』
以上の文書では,行存,列存,スタックテーブル,AOテーブルの原理および選択の根拠について詳しく述べた.
「シンプルなアルゴリズムは、ユビキタスネットワークを支援し、金融ユーザーが98%のデータストレージコストを節約することができます(PostgreSQL、Greenplumがお手伝いします)」
上記のドキュメントでは、カラム・ストレージ・ベースのグローバル・データ圧縮比を向上させる方法について説明します.
《解密神之手-阿里云HDB for PostgreSQLデータベースmetascan特性(ストレージレベル、ブロックレベル、batchレベルフィルタリングとデータ編成)》
以上のドキュメントでは、ローカル編成とアリクラウドHDB for PostgreSQLデータベースのmetascan特性について説明します(インデックスを必要としない場合、任意のカラムの選択性を向上させる方法).
圧縮は実際には(CPU)スワップ(ディスク)を計算する方法ですが、やるべきかどうかは、まず圧縮比、性能損失を見てみましょう.
たい積表
次元countクエリー.
インデックスなし、単一値クエリー
全文を展開
タブ
PostgreSQL,GIS,PostGIS,Greenplum,空間検索,GIST,B-Tree,geohash
背景
『Greenplum行存、列存、スタック表、AO表の原理と選択』
以上の文書では,行存,列存,スタックテーブル,AOテーブルの原理および選択の根拠について詳しく述べた.
「シンプルなアルゴリズムは、ユビキタスネットワークを支援し、金融ユーザーが98%のデータストレージコストを節約することができます(PostgreSQL、Greenplumがお手伝いします)」
上記のドキュメントでは、カラム・ストレージ・ベースのグローバル・データ圧縮比を向上させる方法について説明します.
《解密神之手-阿里云HDB for PostgreSQLデータベースmetascan特性(ストレージレベル、ブロックレベル、batchレベルフィルタリングとデータ編成)》
以上のドキュメントでは、ローカル編成とアリクラウドHDB for PostgreSQLデータベースのmetascan特性について説明します(インデックスを必要としない場合、任意のカラムの選択性を向上させる方法).
圧縮は実際には(CPU)スワップ(ディスク)を計算する方法ですが、やるべきかどうかは、まず圧縮比、性能損失を見てみましょう.
たい積表
postgres=# create table t_heap(id int, c1 text, c2 int);
CREATE TABLE
postgres=# insert into t_heap select id, repeat(md5(random()::text), 128), random()*10000 from generate_series(1,10000000) t(id);
INSERT 0 10000000
Time: 120526.098 ms
次元countクエリー.
postgres=# explain analyze select c2,count(*) from t_heap group by c2;
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Gather Motion 48:1 (slice2; segments: 48) (cost=1578949.03..1579074.98 rows=10076 width=12)
Rows out: 10001 rows at destination with 1354 ms to end, start offset by 519 ms.
-> HashAggregate (cost=1578949.03..1579074.98 rows=210 width=12)
Group By: t_heap.c2
Rows out: Avg 208.4 rows x 48 workers. Max 223 rows (seg17) with 0.001 ms to first row, 692 ms to end, start offset by 581 ms.
-> Redistribute Motion 48:48 (slice1; segments: 48) (cost=1578596.37..1578797.89 rows=210 width=12)
Hash Key: t_heap.c2
Rows out: Avg 10001.0 rows x 48 workers at destination. Max 10704 rows (seg17) with 596 ms to end, start offset by 581 ms.
-> HashAggregate (cost=1578596.37..1578596.37 rows=210 width=12)
Group By: t_heap.c2
Rows out: Avg 10001.0 rows x 48 workers. Max 10001 rows (seg0) with 0.006 ms to first row, 131 ms to end, start offset by 566 ms.
-> Seq Scan on t_heap (cost=0.00..1528595.58 rows=208337 width=4)
Rows out: Avg 208333.3 rows x 48 workers. Max 208401 rows (seg18) with 26 ms to first row, 901 ms to end, start offset by 573 ms.
Slice statistics:
(slice0) Executor memory: 359K bytes.
(slice1) Executor memory: 724K bytes avg x 48 workers, 724K bytes max (seg0).
(slice2) Executor memory: 388K bytes avg x 48 workers, 388K bytes max (seg0).
Statement statistics:
Memory used: 128000K bytes
Settings: optimizer=off
Optimizer status: legacy query optimizer
Total runtime: 1874.143 ms
(22 rows)
Time: 1879.480 ms
インデックスなし、単一値クエリー
全文を展開