Hologres不同的執行個體規格定義了不同的Core和記憶體資源,由於計算和儲存分離架構,儲存資源與執行個體規格不相關。本文將為您介紹執行個體的資源規格,您可以根據需要動態調整執行個體的規格,包括升配、降配,獨立修改計算和儲存資源。
基本概念
Hologres運行時的資源套件括用於中繼資料管理的進程資源、用於查詢服務的計算資源、用於最佳化資料寫入的匯入鏈路資源以及快取服務。所有服務雲端式原生容器技術,通過多個並行的容器計算節點實現高效能並行計算能力。
Hologres基於執行個體的資源規格提供預設的最大串連數和預分配的Shard數,這些參數是針對大多數情境,經過調校和最佳化的預設配置。其中,最大串連數不可修改,Shard數可通過建立新的Table Group調整。系統擴容或者縮容時,最大串連數同時調整,但擴縮容之前的DB預設Shard數不調整,需要手動修改,建立的DB其Shard數為對應規格的預設值。
在擴容後,更多的Core資源可以提供更好的查詢並發能力,大多數使用情境不需要調整Shard數。當您需要更大的寫入能力時,可以擴大Shard數,提高並發寫入的輸送量,但對於OLAP類型的查詢,增大Shard數並不會明顯改善查詢效能,甚至會降低系統的並發吞吐,建議瞭解原理後再調整。同時,行存表由於天然的分布特性,Shard的個數越多,其讀取效能會更高。
執行個體規格推薦
每個Shard負責著一部分資料的讀寫服務要求,在同一個Table Group裡,每個表的一部分資料分發到同一個Shard上,這些表之間如果可以在Shard內關聯,我們稱之為Local Join,是效率更高的關聯方法。如果資料不在同一個Shard內,則需要通過Redistribution運算元,實現資料的Shuffle交換,會有更多的網路傳輸和調度開銷。因此設計Shard時要充分考慮計算的過程是Shard間充分並行化,還是需要Shard間交換資料的情境。對於資料寫入和更新情境,是可以Shard間並行化寫入與更新,因此Shard更多,吞吐能力會更好;對於點查情境,如果每個查詢都可以準確命中某個Shard,即實現Shard剪枝,那麼Shard更多,並發能力更強;對於OLAP類型查詢,因為需要多個Shard共同參與計算,因此不可避免會有資料交換的情境,過多的Shard將帶來更多的節點間架構調度開銷,並最終降低查詢的並發能力。
在使用Hologres執行個體實踐過程中存在資料量可預估,最適宜執行個體規格以及對應Shard數區間應該設定為多少的問題,由於最適宜執行個體規格和Shard數不僅和資料存放區量有關,還和實際訪問頻率、實際資料訪問量、計算負載的類型(點查、分析等)、寫入吞吐、Table Group上表的個數等因素有關,該問題無法給出準確答案。您可參見下表中根據資料量估算的所需Shard數和執行個體規格的推薦數,選擇適合您的參數配置。
下表根據資料量估算的所需Shard數和執行個體規格的推薦數不是唯一標準,小資料量的表也可以放在多的Shard Count之上,巨量資料量的表也可以放在單個Shard上。請您根據實際業務情境選擇一個合適的Shard Count,既滿足有較高的並發度,帶來更高計算效率,又滿足資料較集中,從而避免不必要的Shuffle開銷。
資料總規模 | 推薦規格 | 推薦Shard數 | 使用說明 |
4000萬行以下 | 32Core以上 | 10~20 | 不適合壓力測試,建議用於開發環境。 |
4000萬行~4億行 | 64Core以上 | 20~40 | 適合業務情境較為單一,沒有混合負載情境。 |
4億行~40億行 | 128Core以上 | 40~80 | 寫入查詢能力較為均衡,建議生產系統預設起步配置。 |
40億行~400億行 | 256Core以上 | 80~240 | 建議考慮多個Table Group,按照不同業務屬性的內聚性劃分Table Group,或者按照資料量劃分Table Group,不同Table Group設計不同的Shard,建表時明確指定所屬Table Group。 |
400億行~4000億行 | 512Core以上 | 160~400 | 建議考慮多個Table Group,按照不同業務屬性的內聚性劃分Table Group,或者按照資料量劃分Table Group,不同Table Group設計不同的Shard,建表時明確指定所屬Table Group。僅對部分超大表劃分較多Shard,普通表不建議Shard過多。 |
執行個體預設資源表
Hologres基於執行個體的資源規格提供預設的最大串連數和預分配的Shard數,預設規格配置如下表所示。
每個執行個體規格包括了計算節點和Frontend接入節點,在512Core及以下規格中,預設計算節點數與Frontend節點數相同,在更大規格中,Frontend節點數會略少於計算節點數。
在規格擴容小於5倍時,不建議調整Shard。該預設規格適合絕大部分情境,考慮了寫入和查詢的平衡配置。
最大總串連數=單Frontend節點最大串連數*Frontend節點數,括弧中為具體每個節點的規格,其中括弧前部分為單接入節點最大串連數,後部分為總Frontend接入節點個數。
執行個體規格 | 預設計算節點數 | 預設Shard數(適用於V0.10.31及以上版本) | 最大總串連數(適用於V0.10.25及以上版本) | 最大總串連數(適用於V2.2及以上版本) | Superuser預留總串連數(適用於V1.1及以上版本) |
8Core | 1 | 2 | 128(128*1) | 256(256*1) | 5(5*1) |
32Core | 2 | 20 | 256(128*2) | 512(256*2) | 10(5*2) |
64Core | 4 | 40 | 512(128*4) | 1024(256*4) | 20(5*4) |
96Core | 6 | 60 | 768(128*6) | 1536(256*6) | 30(5*6) |
128Core | 8 | 80 | 1024(128*8) | 2048(256*8) | 40(5*8) |
160Core | 10 | 80 | 1280(128*10) | 2560(256*10) | 50(5*10) |
192Core | 12 | 80 | 1536(128*12) | 3072(256*12) | 60(5*12) |
256Core | 16 | 120 | 2048(128*16) | 4096(256*16) | 80(5*16) |
384Core | 24 | 160 | 3072(128*24) | 6144(256*24) | 120(5*24) |
512Core | 32 | 160 | 4096(128*32) | 8192(256*32) | 160(5*32) |
新增執行個體規格
自2022年4月25日起,Hologres預設提供了512CU至1024CU之間的計算資源規格,如需更高規格,請您使用自助升級或加入HologresDingTalk交流群反饋,詳情請參見如何擷取更多的線上支援?。在升級更大資源規格前,請先將執行個體升級至V1.1.58及以上版本。預設規格配置如下表所示。
執行個體規格 | 預設計算節點數 | 預設Shard數(適用於V1.1.58及以上版本) | 最大總串連數(適用於V1.1.58及以上版本) | 最大總串連數(適用於V2.2及以上版本) | Superuser預留總串連數(適用於V1.1.58及以上版本) |
640Core | 40 | 160 | 5120(128*40) | 10240(256*40) | 200(5*40) |
768Core | 48 | 160 | 6144(128*48) | 12288(256*48) | 240(5*48) |
896Core | 56 | 160 | 7168(128*56) | 14336(256*56) | 280(5*56) |
1024Core | 64 | 200 | 8192(128*64) | 16384(256*64) | 320(5*64) |
1280Core | 80 | 200 | 10240(128*80) | 20480(256*80) | 400(5*80) |
1536Core | 96 | 200 | 12288(128*96) | 24576(256*96) | 480(5*96) |
1792Core | 112 | 200 | 14336(128*112) | 28672(256*112) | 560(5*112) |
2048Core | 128 | 200 | 16384(128*128) | 32768(256*128) | 640(5*128) |
2304Core | 144 | 240 | 18432(128*144) | 36864(256*144) | 720(5*144) |
2560Core | 160 | 240 | 20480(128*160) | 40960(256*160) | 800(5*160) |
3072Core | 192 | 240 | 24576(128*192) | 49152(256*192) | 960(5*192) |
3584Core | 224 | 240 | 28672(128*224) | 57344(256*224) | 1120(5*224) |
4096Core | 256 | 320 | 32768(128*256) | 65536(256*256) | 1280(5*256) |
4608Core | 288 | 320 | 36864(128*288) | 73728(256*288) | 1440(5*288) |
5120Core | 320 | 320 | 40960(128*320) | 81920(256*320) | 1600(5*320) |
5632Core | 352 | 320 | 45056(128*352) | 90112(256*352) | 1760(5*352) |
6144Core | 384 | 320 | 49152(128*384) | 98304(256*384) | 1920(5*384) |
6656Core | 416 | 320 | 53248(128*416) | 106496(256*416) | 2080(5*416) |
7168Core | 448 | 320 | 57344(128*448) | 114688(256*448) | 2240(5*448) |
7680Core | 480 | 320 | 61440(128*480) | 122880(256*480) | 2400(5*480) |
8192Core | 512 | 400 | 65536(128*512) | 131072(256*512) | 2560(5*512) |
查看並管理執行個體預設串連數
Hologres支援您查看並管理執行個體預設串連數。
查看串連數。
當您建立執行個體並串連開發工具之後,可以執行如下語句進行查看,其中傳回值是單個Frontend接入節點的最大串連數。
說明Hologres執行個體總的最大串連數=單Frontend節點最大串連數*Frontend節點數。
--查看單接入節點的最大串連數(實際串連在多個接入節點間均衡分配)。 show max_connections;
管理串連。
執行個體會為Superuser提供預留串連數,當串連數達到預設規格上限時,Superuser可以串連Hologres使用SQL命令查看空閑串連並進行釋放,或者根據業務情況升配。查看空閑串連並進行釋放串連的具體操作,請參見串連數。
查看並修改執行個體Shard數
在執行個體擴容後,大多數情況下不需要調整Shard數,更多的Core資源可以提供更好的查詢並發能力。如果您需要更大的寫入能力,可以通過擴大Shard數來提高並發寫入的輸送量。
同時,行存表由於天然的分布特性,更多的Shard讀取效能會更高。如果因業務需求,需要查看以及修改執行個體的Shard數,請參見Table Group與Shard Count操作指南。