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之間的計算資源規格,如需更高規格,請您使用自助升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?。在升級更大資源規格前,請先將實例升級至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操作指南。