holodesk表tablet数如何计算

  其他常见问题
内容纲要

概要描述

本文主要介绍,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。

file

file

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

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。