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操作指南。