

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Compilação de índice
<a name="index-creation"></a>

A criação de índices no Amazon DocumentDB exige que várias decisões sejam tomadas:
+ Com que rapidez ele precisa ser concluído?
+ A coleção pode ficar inacessível enquanto a construção está ocorrendo?
+ Quanto do poder computacional de uma instância pode ser alocado para a construção?
+ Que tipo de índice deve ser criado?

Esta seção ajuda você a responder a essas perguntas e fornece os comandos e exemplos de monitoramento para criar um índice do Amazon DocumentDB em sua coleção de clusters baseada em instâncias.

## Diretrizes
<a name="index-creation-guidelines"></a>

As diretrizes a seguir incluem limites básicos e compensações de configuração ao criar novos índices:
+ **Suporte à versão do Amazon DocumentDB**: embora a indexação de um único trabalhador seja suportada em todas as versões do Amazon DocumentDB, a indexação de vários trabalhadores é suportada somente nas versões 4.0 e 5.0 do Amazon DocumentDB.
+ **Compensação de desempenho** - Aumentar o número de trabalhadores no processo de criação do índice aumenta a utilização da CPU e a IO de leitura na instância primária do seu banco de dados Amazon DocumentDB. Os recursos necessários para criar um novo índice não estarão disponíveis para sua workload em execução.
+ **Clusters elásticos**: a indexação paralela não tem suporte nos clusters elásticos do Amazon DocumentDB.
+ **Máximo de trabalhadores** - O número máximo de trabalhadores que você pode configurar depende do tamanho da sua instância primária no cluster de banco de dados. É metade do número total de vCPUs na instância primária do seu cluster de banco de dados. Por exemplo, você pode executar no máximo 32 trabalhadores em uma instância db.r6g.16xlarge que tenha 64 vCPUs.

**nota**  
A criação paralela de índices é compatível com instâncias 2xlarge e superiores.
+ **Mínimo de trabalhadores** - O número mínimo de trabalhadores que você pode configurar é um. A configuração padrão para criação de índices em clusters baseados em instâncias é de dois trabalhadores. No entanto, você pode reduzir o número de trabalhadores para um usando a opção “threads de trabalhadores”. Isso executará o processo com um único trabalhador.
+ **Compactação de índice** - O Amazon DocumentDB não oferece suporte à compactação de índices. O tamanho dos dados para dados e índices armazenados poderá ser maior do que ao usar outras opções.
+ **Indexação de várias coleções** - Metade das vCPUs na instância primária do seu cluster de banco de dados pode ser usada para trabalhadores configurados que realizam a criação de índices em várias coleções.
+ **Tipos de índice** - Consulte [Tipos de índice](index-types.md) a lista dos tipos de índice compatíveis no Amazon DocumentDB.

## Tipos de criação de índice
<a name="index-creation-build-types"></a>

Os quatro tipos de criação de índices são:
+ **Primeiro plano:** a construção do índice em primeiro plano bloqueia todas as outras operações do banco de dados na coleção em que o índice é criado, até que a criação do índice seja concluída. A construção em primeiro plano do Amazon DocumentDB é composta por cinco estágios.
+ **Primeiro plano (exclusivo):** as compilações de índice de primeiro plano de um único documento (exclusivo) bloqueiam outras operações de banco de dados, como compilações regulares de primeiro plano. Ao contrário da construção básica em primeiro plano, a compilação exclusiva usa um estágio adicional (chaves de classificação 2) para procurar chaves duplicadas. A construção em primeiro plano (exclusiva) é composta por seis estágios.
+ Plano de **fundo:** a criação do índice em segundo plano permite que outras operações do banco de dados sejam executadas em primeiro plano enquanto o índice está sendo criado. A construção em segundo plano do Amazon DocumentDB é composta por oito estágios.
+ Plano de **fundo (exclusivo):** as compilações de índice em segundo plano de um único documento (exclusivo) permitem que outras operações do banco de dados sejam executadas em primeiro plano enquanto o índice está sendo criado. Ao contrário da construção básica em segundo plano, a compilação exclusiva usa um estágio adicional (chaves de classificação 2) para procurar chaves duplicadas. A construção de fundo (única) é composta por nove estágios.

O tipo padrão de criação do índice é primeiro plano.

Para criar um índice em segundo plano, você adiciona o parâmetro “background”: true ao criar o índice.

## Introdução
<a name="index-creation-getting-started"></a>

Para iniciar a criação do índice em uma coleção, use o comando CreateIndexes. Por padrão, o comando executará dois trabalhadores paralelos, o que aumenta a velocidade do processo de criação do índice em duas vezes.

Por exemplo, o processo de comando a seguir demonstra como criar um índice para o campo “user\_name” em um documento e aumentar a velocidade do processo de indexação para quatro trabalhadores:

1. Crie índices em segundo plano usando dois trabalhadores paralelos no cluster:

   ```
   db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "background":true }]})
   ```

1. Para otimizar a velocidade do processo de criação do índice, você pode especificar o número de trabalhadores usando a opção “threads de trabalho” (“workers”:<number>) no comando db.RunCommand createIndexes.

   Aumente a velocidade do processo para quatro trabalhadores paralelos:

   ```
   db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "workers":4}]})
   ```

**nota**  
Quanto maior o número de trabalhadores, mais rápido a criação do índice progride. No entanto, quanto maior o número de trabalhadores, maior o aumento da carga nas vCPUs e na E/S de leitura da sua instância primária. Garanta que seu cluster esteja suficientemente provisionado para lidar com o aumento da carga sem degradar outras workloads.

## Status do andamento da indexação
<a name="index-creation-progress-status"></a>

O processo de criação de índices funciona inicializando, escaneando coleções, classificando chaves e, finalmente, inserindo chaves por meio de um construtor de índices. O processo tem até seis estágios quando você o executa em primeiro plano e até nove estágios quando você o executa em segundo plano. É possível visualizar métricas de status, como percentual de conclusão, número total de blocos de armazenamento digitalizados, chaves classificadas e chaves inseridas, etapa por etapa.

Monitore o progresso no processo de indexação usando o comando db.currentOp () no shell mongo. Uma conclusão de 100% da última etapa mostra que todos os índices foram criados com sucesso:

```
db.currentOp({"command.createIndexes": { $exists : true } })
```

**nota**  
Só há suporte para a visualização do status do andamento da indexação no Amazon DocumentDB 5.0.

## Etapas de construção do índice
<a name="index-creation-build-stages"></a>


| Estágio | Primeiro plano | Primeiro plano (exclusivo) | Contexto | Plano de fundo (exclusivo) | 
| --- | --- | --- | --- | --- | 
| Inicializando | 1 | 1 | 1 | 1 | 
| índice de construção: inicializando | 2 | 2 | 2 | 2 | 
| índice de construção: varredura da coleção | 3 | 3 | 3 | 3 | 
| índice de construção: chaves de classificação 1 | 4 | 4 | 4 | 4 | 
| índice de construção: chaves de classificação 2 |  | 5 |  | 5 | 
| índice de construção: inserindo chaves | 5 | 6 | 5 | 6 | 
| validação: índice de digitalização |  |  | 6 | 7 | 
| validação: classificação de tuplas |  |  | 7 | 8 | 
| validação: coleta de digitalização |  |  | 8 | 9 | 
+ **inicialização** - createIndex está preparando o construtor de índices. Essa fase deve ser muito breve.
+ **índice de construção: inicialização** - O criador de índices está se preparando para criar o índice. Essa fase deve ser muito breve.
+ **índice de construção: coleção de varredura** - O construtor de índices está realizando uma varredura de coleção para coletar chaves de índice. A unidade de medida é “blocos”.

**nota**  
Se mais de um trabalhador estiver configurado para a criação do índice, ele será exibido nesse estágio. O estágio de “coleta de digitalização” é o único estágio que usa vários trabalhadores durante o processo de criação do índice. Todos os outros estágios exibirão um único trabalhador.
+ **índice de construção: chaves de classificação 1** - O construtor de índices está classificando as chaves de índice coletadas. A unidade de medida é “chaves”.
+ **índice de construção: chaves de classificação 2** - O construtor de índices está classificando as chaves de índice coletadas que correspondem às tuplas mortas. Essa fase existe apenas para a criação de índices exclusivos. A unidade de medida é “chaves”.
+ **índice de construção: inserindo chaves** - O criador de índices está inserindo chaves de índice no novo índice. A unidade de medida é “chaves”.
+ **validando: índice de varredura** - createIndex está examinando o índice para encontrar chaves que precisam ser validadas. A unidade de medida é “blocos”.
+ **validando: classificando tuplas** - createIndex está classificando a saída da fase de varredura do índice.
+ **validando: escaneando a coleção** - CreateIndex está escaneando a coleção para validar as chaves de índice encontradas nas duas fases anteriores. A unidade de medida é “blocos”.

## Exemplo de saída de compilação de índice
<a name="index-creation-build-output"></a>

No exemplo de saída a seguir (criação do índice em primeiro plano), o status da criação do índice é mostrado. O campo “msg” resume o progresso da compilação indicando o estágio e a porcentagem de conclusão da construção. O campo “trabalhadores” indica o número de trabalhadores usados durante esse estágio da criação do índice. O campo “progresso” mostra os números reais usados para calcular a porcentagem de conclusão.

**nota**  
Os campos IndexBuildName “current”, “msg” e “progress” não são compatíveis com o Amazon DocumentDB versão 4.0.

```
{
    "inprog" : [{
    … 
        "command": {
            "createIndexes": "test",
            "indexes": [{
                "v": 2,
                "key": {
                    "user_name": 1
                },
                "name": "user_name_1"
            }],
            "lsid": {
                "id": UUID("094d0fba-8f41-4373-82c3-7c4c7b5ff13b")
            },
            "$db": "test"
        },
        "currentIndexBuildName": user_name_1,
        "msg": "Index Build: building index number_1, stage 6/6 building index: 656860/1003520 (keys) 65%",
        "workers": 1,
        "progress": {
            "done": 656861,
            "total": 1003520
        },
    … 
    ],
 
    "ok" : 1
}
```

## Recursos de solução de problemas
<a name="index-creation-troubleshooting"></a>

Consulte os seguintes recursos para solucionar problemas de criação de índices:
+ [Falha na construção do índice](troubleshooting.index-creation.md#troubleshooting.index-build-fails)
+ [Problemas e falhas de latência de criação de índice em segundo plano](troubleshooting.index-creation.md#troubleshooting.background-index-build-fails)