閱讀905 返回首頁    go 微信


性能壓測注意事項__快速入門_雲數據庫 HybridDB-阿裏雲

雲數據庫HybridDB(ApsaraDB HybridDB)是一種在線MPP大規模並行處理數據倉庫服務。雲數據庫HybridDB基於Greenplum Database開源數據庫項目,並由阿裏雲深度擴展支持OSS存儲、JSON數據類型、HyperLogLog預估分析等功能特性。

性能方麵注意事項

使用 雲數據庫HybridDB 時,在性能方麵需要注意以下事項:

1) 雲數據庫HybridDB 實例缺省狀態下,沒有啟用 Nested Loop(嵌套連接)。因此,對於隻涉及或返回少部分數據的查詢,性能可能不是最優的。例如下麵的SQL語句。

  1. 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的連接方式是最優的。要使用Nested Loop連接,需要執行一下SET命令,如下所示。

  1. show enable_nestloop ;
  2. enable_nestloop
  3. -----------------
  4. off
  5. SET enable_nestloop = on ;
  6. show enable_nestloop ;
  7. enable_nestloop
  8. -----------------
  9. on
  10. explain select * from T1 join T2 on T1.c1 = T2.c1 where T1.c2 >= '230769548' and T1.c2 < '23432442' limit 100;
  11. QUERY PLAN
  12. -----------------------------------------------------------------------------------------------
  13. Limit (cost=0.26..16.31 rows=1 width=18608)
  14. -> Nested Loop (cost=0.26..16.31 rows=1 width=18608)
  15. -> Index Scan using T1 on c2 (cost=0.12..8.14 rows=1 width=12026)
  16. Filter: ((c2 >= '230769548'::bpchar) AND (c2 < '230769549'::bpchar))
  17. -> Index Scan using T2 on c1 (cost=0.14..8.15 rows=1 width=6582)
  18. Index Cond: ((c1)::text = (T1.c1)::text)

可以發現,T1和T2兩張表是使用Nested Loop連接的,從而獲得了最優的性能。

2)雲數據庫HybridDB 支持 ORCA 優化器。當執行一個較複雜的 SQL,並且發現性能不理想時,可以試試啟用ORCA優化器進行優化。在數據庫連接中,執行一個SET命令,即可啟用ORCA(如下所示)。注意,SET命令作用在連接級別,隻在同一連接內有效,對於新的連接需要重新執行SET,來啟用ORCA。

  1. EXPLAIN <SQL text>
  2. SET optimizer = on;
  3. EXPLAIN <SQL text>

在上麵的例子中,我們在啟用ORCA前後,分別使用EXPLAIN命令來查看查詢計劃。這樣可以檢查ORCA是否真正改變了SQL的查詢計劃。

3)目前 雲數據庫HybridDB 的存儲支持兩種壓縮方式:zlib和RLE。RLE適用於數據中的相同值在物理上是連續存儲的情況,zlib適用於其他情況。壓縮方式可以在字段級別或表級別指定。具體參見文檔

最後更新:2016-12-01 11:11:36

  上一篇:go 通過COPY數據導入__快速入門_雲數據庫 HybridDB-阿裏雲
  下一篇:go 客戶端工具使用__快速入門_雲數據庫 HybridDB-阿裏雲