Todos os produtos
Search
Central de documentação

Tablestore:Configurar pontos de divisão ao usar o Tablestore Reader para sincronizar dados completos

Última atualização: Jul 03, 2026

Este tópico descreve como configurar pontos de divisão no script para corrigir a lentidão na sincronização que ocorre ao usar o Tablestore Reader para sincronizar dados completos.

Descrição do problema

Ao usar o Tablestore Reader para sincronizar dados completos, a velocidade de sincronização é baixa. O código de exemplo a seguir mostra como configurar a sincronização completa de dados:

"reader": {
  "plugin": "ots",
  "parameter": {
    "datasource": "",
    "table": "",
    "column": [],
    "range": {
      "begin": [
        {
          "type": "INF_MIN"
        }
      ],
      "end": [
        {
          "type": "INF_MAX"
        }
      ]
    }
  }
}

Causa

Um grande volume de dados está sendo sincronizado sem pontos de divisão configurados no script, o que resulta na criação de apenas uma thread para obter os dados. Isso afeta diretamente a velocidade da sincronização.

Solução

Para sincronizar um grande volume de dados com o Tablestore Reader, configure pontos de divisão no script. Siga as etapas abaixo para configurar esses pontos:

  1. Obtenha as informações sobre os pontos de divisão necessários usando um dos métodos a seguir:

    • Use o SDK do Tablestore para Java e chame a operação ComputeSplitPointsBySize. Para mais detalhes, consulte Dividir dados em shards de um tamanho específico.

      Resposta de exemplo:

      LowerBound:pkname1:INF_MIN, pkname2:INF_MIN
      UpperBound:pkname1:cbcf23c8cdf831261f5b3c052db3479e, pkname2:INF_MIN
      LowerBound:pkname1:cbcf23c8cdf831261f5b3c052db3479e, pkname2:INF_MIN
      UpperBound:pkname1:INF_MAX, pkname2:INF_MAX
    • Baixe a CLI do Tablestore e execute o comando points -s splitSize -t tablename. Para mais informações, consulte Iniciar a CLI do Tablestore e configurar informações de acesso.

      Nota

      A unidade do valor splitSize é 100 MB. Se o volume de dados a ser sincronizado for pequeno, não é necessário configurar pontos de divisão. Para grandes volumes, recomendamos especificar um valor para o parâmetro splitSize com base no número máximo de threads simultâneas suportadas pelo seu ambiente.

      Resposta de exemplo:

      [
      
        {
      
          "LowerBound": {
      
            "PrimaryKeys": [
      
              {
      
                "ColumnName": "pkname1",
      
                "Value": null,
      
                "PrimaryKeyOption": 2
      
              },
      
              {
      
                "ColumnName": "pkname2",
      
                "Value": null,
      
                "PrimaryKeyOption": 2
      
              }
      
            ]
      
          },
      
          "UpperBound": {
      
            "PrimaryKeys": [
      
              {
      
                "ColumnName": "pkname1",
      
                "Value": "cbcf23c8cdf831261f5b3c052db3479e\u0000",
      
                "PrimaryKeyOption": 0
      
              },
      
              {
      
                "ColumnName": "pkname2",
      
                "Value": null,
      
                "PrimaryKeyOption": 2
      
              }
      
            ]
      
          },
      
          "Location": "80310717938EDF503FB1E26F70710391"
      
        },
      
        {
      
          "LowerBound": {
      
            "PrimaryKeys": [
      
              {
      
                "ColumnName": "pkname1",
      
                "Value": "cbcf23c8cdf831261f5b3c052db3479e\u0000",
      
                "PrimaryKeyOption": 0
      
              },
      
              {
      
                "ColumnName": "pkname2",
      
                "Value": null,
      
                "PrimaryKeyOption": 2
      
              }
      
            ]
      
          },
      
          "UpperBound": {
      
            "PrimaryKeys": [
      
              {
      
                "ColumnName": "pkname1",
      
                "Value": null,
      
                "PrimaryKeyOption": 3
      
              },
      
              {
      
                "ColumnName": "pkname2",
      
                "Value": null,
      
                "PrimaryKeyOption": 3
      
              }
      
            ]
      
          },
      
          "Location": "80310717938EDF503FB1E26F70710391"
      
        }
      
      ]

      Identifique os valores das primeiras colunas de chave primária. Por exemplo, o valor do parâmetro pkname1 no primeiro LowerBound é null, o valor do parâmetro pkname1 no primeiro UpperBound é "cbcf23c8cdf831261f5b3c052db3479e\u0000", o valor do parâmetro pkname1 no segundo LowerBound é "cbcf23c8cdf831261f5b3c052db3479e\u0000" e o valor do parâmetro pkname1 no segundo UpperBound é null. Para sincronizar todos os dados, defina as seguintes configurações no script:

      "split" : [
      
       {
      
         "type":"STRING",
      
         "value":"cbcf23c8cdf831261f5b3c052db3479e\u0000"
      
       }
      
      ]

      Ao executar o script anterior, o Tablestore divide os dados completos em duas partes e obtém os dados simultaneamente com base nos intervalos (INF_MIN,cbcf23c8cdf831261f5b3c052db3479e\u0000) e [cbcf23c8cdf831261f5b3c052db3479e\u0000,INF_MAX). Dessa forma, a sincronização de dados é acelerada.

  2. Configure os pontos de divisão no script usado para sincronizar os dados. O código de exemplo a seguir demonstra essa configuração:

    "range": {
          "begin": [
            {
              "type": "INF_MIN"
            }
          ],
          "end": [
            {
              "type": "INF_MAX"
            }
          ],
          "split": [
            {
              "type": "STRING",
              "value": "splitPoint1"
            },
            {
              "type": "STRING",
              "value": "splitPoint2"
            },
            {
              "type": "STRING",
              "value": "splitPoint3"
            }
          ]
    }

Caso a sincronização continue lenta mesmo após a configuração dos pontos de divisão, envie um ticket para entrar em contato com o suporte técnico.