概要描述
本文主要介绍,ArgoDB 5.2及以上版本中,Tablet数量如何设定
什么是Tablet(分片)?
简单理解,Tablet是Holodesk表在底层存储系统中的“数据分块”。一张表的数据会被切分成多个Tablet,分布在集群的不同磁盘上。
Tablet的核心特点:
- 一个Tablet只存储在一块磁盘上。因此,Tablet数量越多,表能利用的磁盘数量就越多,读写性能越好。
- Tablet数量在建表时确定,建表后无法修改。如果需要调整,只能重建表并重新导入数据。
详细说明
在ArgoDB 5.2及以上版本中,创建Holodesk表时,有三种方式控制Tablet数量。系统会自动根据您选择的方式计算合理的值。
方式一:不指定任何参数(最常用,推荐)
直接使用最简单的建表语句,系统会自动计算Tablet数量:
CREATE TABLE my_table (id INT, name STRING) STORED AS HOLODESK;
计算逻辑:Tablet数量 = Min(节点数 × 3, 集群总磁盘数)
这里的“3”是一个内部参数(argodb.tablet.num.ratio)的默认值,表示每个节点对应3个Tablet。
适用场景:大多数业务场景,简单快捷,系统自动给出一个合理的值。
方式二:指定表大小(TABLESIZE)
通过预估表的总数据量来让系统自动计算Tablet数量:
CREATE TABLE my_table (id INT, name STRING) STORED AS HOLODESK WITH TABLESIZE 100GB;
计算逻辑:Tablet数量 = Min(TABLESIZE / 1GB, 集群总磁盘数)
- 如果TABLESIZE小于等于1GB,则Tablet数量为1。
- 如果TABLESIZE为100GB,集群有10块磁盘,则Tablet数量为10。
适用场景:对性能有极致要求,希望根据预估数据量精确控制Tablet数量。
方式三:直接指定Tablet数量(高级用法)
直接指定Tablet数量,需要同时提供三个参数:
CREATE TABLE my_table (id INT, name STRING)
STORED AS HOLODESK
WITH TABLET NUMBER 50 CAPACITY NUMBER 10 REPLICATION 3;
--TABLET NUMBER:您希望的分片数量
--CAPACITY NUMBER:预估表未压缩前的总大小(以GB为单位)
--REPLICATION:副本数(需为奇数)
注意:这是唯一能让Tablet数量超过磁盘总数的设置方式,但可能导致磁盘写入倾斜,不建议普通用户使用。
FAQ
1. tablet数量设置多少合适?
通用建议:一个经验法则是:让每个Tablet管理约50GB数据。例如:
- 一张1TB的表,建议设定20个Tablet
- 一张100GB的表,建议设定2个Tablet
tablet数量过多或过少的影响
| 情况 | 影响 |
|---|---|
| Tablet数量过少 | 数据只能集中在少数几块磁盘上,无法利用集群中所有磁盘的读写能力,导致查询和写入性能不佳 |
| Tablet数量过多 | 会占用TDDMS(底层存储服务)更多的管理资源(如文件句柄、内存)。虽然ArgoDB 5.x单节点承载Tablet的能力已大幅提升(可达100万),但过多仍可能带来不必要的开销 |
推荐做法
- 新版本用户:直接使用默认建表方式(不指定参数),系统会自动给出一个合理的值。
- 需要精确控制:根据预估数据量,使用TABLESIZE参数进行微调,推荐每个Tablet管理约50GB数据。
2.如何查看一张表的Tablet数量?
建表后,可以通过以下两种方式查看:
1.通过TDDMS Web界面:在TDDMS管理页面中,找到对应的表,可以看到其Tablet数量。
如下图,该集群的tddms,16个tserver节点,总磁盘数查看 tabletserver.store.datadirs 是120 个,
所以 Tablet数量 = Min(节点数 × 3, 集群总磁盘数) = Min(16*3,120)= 48,最终该表48个tablet,乘以副本数3,全部是144个tablet。


2.通过DBA Service:在DBA Service的“表列表”中,可以看到“分片数量”一列,即为Tablet数量。
