這邊的 Amazon Redshift 都是跑在 Oregon (us-west-2),前者的價錢是 USD$9.6/hour,後者是 USD$8/hour,大約貴一些。這是同一個 query 跑過多次後穩定的數字,用 PostgreSQL 的 \timing
出來的數字計算。
先從比較簡單的 query 開始,這個表格大約六億筆資料,如果以記憶體大小算的話,是 memory-fit。
前者是:
dev=# SELECT COUNT(DISTINCT x) FROM t; count -------- 925612 (1 row) Time: 3345.946 ms
後者是:
dev=# SELECT COUNT(DISTINCT x) FROM t; count -------- 925612 (1 row) Time: 2145.132 ms
再來條件多一點,一樣前者是:
dev=# SELECT x, COUNT(*) AS cnt FROM t GROUP BY x ORDER BY cnt DESC LIMIT 20; ... (20 rows) Time: 2121.002 ms
後者是:
dev=# SELECT x, COUNT(*) AS cnt FROM t GROUP BY x ORDER BY cnt DESC LIMIT 20; ... (20 rows) Time: 1388.102 ms
發現比較貴的 cluster 的反而比較慢 (大台 dw2.8xlarge 組成的),用多台小台的去堆反而比較快。晚點找時間測沒辦法 memory-fit 的速度。
意外的跟直覺不太一樣,要測過才知道...
感覺上要看 query 是 CPU bound 還是 I/O bound。
dw2.large 的 ECU 是 7,32 台總 ECU 是 224。
dw2.8xlarge 的 ECU 是 104,2台總 ECU 是 208。
如果是 CPU bound 的 query,32 台 dw2.large 的效能會比 2 台 dw2.8xlarge 好。
dw2.large 的 I/O 是 0.2GB/s,32 台總 I/O 是 6.4GB/s。
dw2.8xlarge 的 I/O 是 3.5GB/s,2台總 I/O 是 7GB/s。
如果是 I/O bound 的 query,2台 dw2.8xlarge 才會快過 32 台 dw2.large。