Índices de solução de problemas - Amazon DocumentDB

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á.

Índices de solução de problemas

Os tópicos a seguir abordam o que fazer se a criação do índice ou índice em segundo plano falhar.

Criação de índice fracassa

O Amazon DocumentDB utiliza armazenamento local em uma instância como parte do processo de criação do índice. Você pode monitorar esse uso do disco usando a FreeLocalStorage CloudWatch métrica (CloudWatch -> Metrics -> DocDB -> Instance Metrics). Quando a criação do índice consumia todo o disco local e falhar, você receberá um erro. Ao migrar dados para o Amazon DocumentDB, recomendamos que você crie índices primeiro e, depois, insira os dados. Para obter mais informações sobre estratégias de migração e criação de índices, consulte Migrar para o Amazon DocumentDB na documentação do Amazon DocumentDB e no blog: Migrar do MongoDB para o Amazon DocumentDB usando o método offline.

Ao criar índices em um cluster existente, se a criação do índice estiver demorando mais do que o esperado ou falhando, recomendamos que você aumente a instância para criar o índice e, depois que o índice for criado, reduza novamente. O Amazon DocumentDB permite que você escale rapidamente os tamanhos das instâncias em minutos usando o AWS Management Console ou o. AWS CLI Para obter mais informações, consulte Gerenciar classes de instância. Com a definição de preço de instâncias por segundo, você paga apenas pelo recurso usado por segundo.

Problemas e falhas de latência de criação de índice em segundo plano

As compilações de índice em segundo plano no Amazon DocumentDB não são iniciadas até que todas as consultas na instância primária iniciadas antes do início da criação do índice sejam concluídas. Se houver uma consulta de longa duração, as compilações do índice em segundo plano serão bloqueadas até que a consulta seja concluída e, portanto, podem levar mais tempo do que o esperado para serem concluídas. Isso será verdadeiro mesmo que as coleções estejam vazias.

As compilações de índice em primeiro plano não exibem o mesmo comportamento de bloqueio. Em vez disso, as compilações de índice em primeiro plano têm um bloqueio exclusivo na coleção até que a construção do índice seja concluída. Portanto, para compilar índices em uma coleção vazia e evitar bloqueios em consultas de longa duração, sugerimos usar compilações de índice em primeiro plano.

nota

O Amazon DocumentDB permite que apenas uma compilação de índice de segundo plano ocorra em uma coleção em um determinado momento. Se as operações de DDL (Linguagem de definição de dados) como createIndex() ou dropIndex() ocorrerem na mesma coleção durante uma compilação de índice de segundo plano, essa compilação falhará.

Inchaço no índice do banco de dados

O Amazon DocumentDB usa o Multi-Version Concurrency Control (MVCC) para gerenciar transações simultâneas. Quando os documentos são excluídos ou atualizados, suas versões anteriores permanecem em coleções e índices como versões “inativas”. O processo de coleta de lixo recupera automaticamente o espaço dessas versões inativas para futuras operações.

O inchaço do índice ocorre quando os índices de uma coleção se tornam maiores devido ao acúmulo de entradas de índice inativas ou obsoletas ou à fragmentação nas páginas. A porcentagem relatada representa a quantidade de espaço de índice que pode ser usada por futuras entradas de índice. Esse inchaço consome espaço no cache e no armazenamento do buffer. Se você quiser remover o inchaço, precisará reconstruir os índices.

exemplo Exemplo

Execute o comando a seguir para determinar o armazenamento não utilizado para seu índice:

db.coll.aggregate({$indexStats:{}});

O resultado é semelhante a este:

{ "name" : "_id_", "key" : { "_id" : 1 }, "host" : "devbox-test.localhost.a2z.com:27317", "size" : NumberLong(827392), "accesses" : { "ops" : NumberLong(40000), "docsRead" : NumberLong(46049), "since" : ISODate("2025-04-03T21:44:51.251Z") }, "cacheStats" : { "blksRead" : NumberLong(264), "blksHit" : NumberLong(140190), "hitRatio" : 99.8121 }, "unusedStorageSize" : { "unusedSizeBytes" : 409600, "unusedSizePercent" : 49.51 } }

Você pode reconstruir índices sem tempo de inatividade usando o reIndex comando, que requer uma verificação de toda a coleção. Consulte Manutenção de índices usando reIndex.