划分数据分片

更新时间:
复制 MD 格式

Go SDK 可按指定大小将全表数据逻辑划分为多个分片,并返回各分片的主键范围和位置提示。

前提条件

安装Tablestore Go SDK并初始化客户端。

功能说明

调用 ComputeSplitPointsBySize 按指定大小将数据表逻辑划分为多个分片。每个分片包含主键范围和位置提示,可将主键范围传入 RangeRowQueryCriteria 并行读取数据,常用于计算引擎规划并发任务。

func (client TableStoreClient) ComputeSplitPointsBySize(req *ComputeSplitPointsBySizeRequest) (*ComputeSplitPointsBySizeResponse, error)

以下示例按约 200 MB 将 example_table 的全表数据划分为多个逻辑分片,并输出每个分片的信息。

request := &tablestore.ComputeSplitPointsBySizeRequest{
    TableName: "example_table",
    SplitSize: 2,
}

response, err := client.ComputeSplitPointsBySize(request)
if err != nil {
    log.Fatal(err)
}

for _, split := range response.Splits {
    fmt.Println("Location:", split.Location)
    fmt.Println("Lower bound:", split.LowerBound)
    fmt.Println("Upper bound:", split.UpperBound)
}
说明

SplitSize 的单位为 100 MB,取值 N 表示每个分片的近似大小为 N × 100 MB。划分结果是逻辑分片,实际大小可能存在偏差。Location 仅为位置提示,部分场景下可能为空字符串。

参数说明

ComputeSplitPointsBySizeRequest 包含以下参数。

名称

类型

说明

TableName(必选)

string

数据表名称。

SplitSize(必选)

int64

每个逻辑分片的近似大小,单位为 100 MB。例如设置为 2 表示按约 200 MB 划分。

返回值

ComputeSplitPointsBySizeResponse 包含以下业务信息。

字段

类型

说明

Splits

[]*Split

逻辑分片列表。

逻辑分片

Splits[] 的类型为 Split,包含以下字段。

字段

类型

说明

LowerBound

*PrimaryKey

分片主键范围的下界,可作为范围读取的起始主键。

UpperBound

*PrimaryKey

分片主键范围的上界,可作为范围读取的结束主键。

Location

string

分片所在机器的位置提示,部分场景下可能为空字符串。