原創|行業資訊|編輯:陳俊吉|2016-05-30 10:32:17.000|閱讀 238 次
概述:IBM Big SQL 是SQL on Hadoop 的方案,它的核心引擎沿用了DB2的技術,因此,Big SQL的優化與DB2類似。由于Big SQL本身不擁有數據(數據在HDFS),所以它自身的優化選項要比DB2少,但同時要注意優化Hadoop/HDFS。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
對于Big SQL的優化,您需要注意以下六個方面:
在進行集群的物理設計需要考慮數據節點的配置要一致,避免某個數據節點性能短板而影響整體性能。而對于管理節點,它雖然不保存業務數據,但作為管理服務和BigSQL系統包空間的存儲,也需要配置一定數量的磁盤。另外,CPU/內存/磁盤的配比要合理,用戶可以參考以下配置作為物理設計的基礎:
CPU:16核
內存:128GB
硬盤:600GB * 2塊(系統使用),數據節點3TB * 12塊/管理節點3TB* 12塊
為了達到更高的I/O吞吐量,您需要盡量將數據分到多塊磁盤上。具體來說,您需要這樣的設置:
注意bigsql_db_dir 目錄在Big SQL的Head Node和Worker Node都需要具體同樣的路徑。
Big SQL支持多種格式,包括TEXT、SEQUENCE、RC、PARQUET、Avro、ORC等存儲格式。BigSQL會自動根據文件格式選擇相應的Reader以求最佳性能。選擇存儲格式需要在加載速度/壓縮比/查詢性能/收集統計信息速度之間折中。不同的存儲格式之間對比請參考《BigSQL支持的存儲格式和對應的建表語句》。
對于Big SQL,Parquet通常是最優的存儲格式。
每個節點上Big SQL所需內存等同于DB2的INSTANCE_MEMORY,推薦的取值范圍是系統可用內存的25%~75%。需要注意的是Big SQL和MapReduce之間是共用系統內存的,如果Big SQL分配內存較多,那么MapReduce可用內存就少了,就有可能影響MR作業的性能。
Big SQL的Buffer pool只用于緩存臨時數據而不緩存用戶數據,這點與DB2有很大差異,對于排序堆相關的管理則與DB2一致。建議開啟STMM(自調優內存管理器)運行一段時間,然后在工作負載和STMM調優的參數穩定之后再關閉。
Big SQL沿用了DB2的SQL重寫和基于成本的優化等功能。對于優化器選擇成本最低的執行計劃,統計信息起到關鍵作用。因此,每次數據發生較大變化時需要及時收集對應表的統計信息。
另外,Big SQL自身不管理用戶數據,因此也不支持創建和維護索引。但是,Big SQL支持創建Primary Key,Foreign Key等約束。在不用考慮Index的時候,盡可能為數據表指定PK,FK等,這些約束有助于優化器對SQL的優化。
考慮對數據量大,具有合適的分區鍵(如查詢條件中需要使用“日期”字段)的表使用Range Partition。
選擇合適的數據類型,特別注意需要將Hive的string類型默認映射到Big SQL是VARCHAR(32,672),加上其它字段絕大多數情況都會超過32K的PageSize,從而導致性能下降。建議將Hive的string顯式地轉成較小的VARCHAR (n)。
如果并發查詢很多導致了CPU和內存過分競爭和系統性能下降,則要考慮使用WLM(Workload Management)對并發的查詢數據進行限制。
詳情請咨詢“”!
客服熱線:023-66090381
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn