ComputeSplitsBySize

API说明:ComputeSplitPointsBySize

将全表数据逻辑上划分成接近指定大小的若干分片,返回这些分片之间的分割点以及分片所在机器的提示。一般用于计算引擎规划并发度等执行计划。

接口
    /**
     * 将全表的数据在逻辑上划分成接近指定大小的若干分片,返回这些分片之间的分割点以及分片所在机器的提示。
     * 一般用于计算引擎规划并发度等执行计划。
     * @api
     * @param [] $request 请求参数。
     * @return [] 请求返回
     * @throws OTSClientException 当参数检查出错或服务端返回校验出错时
     * @throws OTSServerException 当OTS服务端返回错误时
     */
    public function computeSplitPointsBySize(array $request)
			
请求格式
$result = $client->ComputeSplitsBySize([
    'table_name' => '<string>', // REQUIRED
    'split_size' => <integer>   // REQUIRED
]);     
请求格式说明
  • table_name 表名。
  • split_size 每个分片的近似大小,以百兆为单位。
结果格式
[
    'consumed' => [
        'capacity_unit' => [
            'read' => <integer>,
            'write' => <integer>
        ]
    ],
    'primary_key_schema' => [
        ['<string>', <PrimaryKeyType>],
        ['<string>', <PrimaryKeyType>, <PrimaryKeyOption>]
    ]
    'splits' => [
        [ 
            'lower_bound' => [
                ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>],
                ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
            ],
            'upper_bound' => [
                ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>],
                ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
            ],
            'location' => '<string>'
        ],
        // ...
    ]
]           
结果格式说明
  • consumed 本次操作消耗服务能力单元的值。
    • capacity_unit 使用的读写单元量
      • read 读吞吐量
      • write 写吞吐量
  • primary_key_schema 表的主键定义,与建表时给出的 Schema 相同。
  • splits 分片之间的分割点。
    • lower_bound 主键的区间最小值。注:可以传递给getRange使用。
      • 每一项的顺序是 主键名,主键值PrimaryKeyValue, 主键类型PrimaryKeyType
      • PrimaryKeyType可以是INTEGER,STRING(UTF-8编码字符串),BINARY,INF_MIN(-inf), INF_MAX(inf)五种,分别用PrimaryKeyTypeConst::CONST_INTEGER,PrimaryKeyTypeConst::CONST_STRING,PrimaryKeyTypeConst::CONST_BINARY,PrimaryKeyTypeConst::CONST_INF_MIN,PrimaryKeyTypeConst::CONST_INF_MAX表示。
    • upper_bound 主键的区间最大值。格式同上。
    • location 分割点所在机器的提示。可以为空
示例

指定大小计算分片

    $result = $client->ComputeSplitsBySize([
        'table_name' => 'MyTable', 
        'split_size' => 1
    ]);
    foreach($result['splits'] as $split) {
        print_r($split['location']);    
        print_r($split['lower_bound']);    
        print_r($split['upper_bound']);    
    }