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á.
Coleta de resíduos do dicionário do Neptune
O Neptune oferece suporte à coleta de resíduos (GC) de dicionário, que pode ser habilitada pelo parâmetro neptune_lab_mode para dados de grafos de propriedade. Pode ser habilitada para clusters com apenas dados de grafos de propriedades quando neptune_streams não está habilitado. O recurso é desabilitado automaticamente se neptune_streams estiver habilitado ou se houver dados neptune_streams não expirados. O recurso requer a reinicialização da instância do gravador para ser ativado. Esse recurso está disponível a partir da versão de mecanismo 1.4.3.0.
Quando habilitado, as entradas não utilizadas do dicionário são limpas por um trabalho em segundo plano. Ele não reduz VolumeBytesUsed, em vez disso, libera espaço no índice para novas inserções. A taxa de crescimento de VolumeBytesUsed provavelmente será menor quando a GC de dicionário está habilitada relação a quando não está.
A coleta de resíduos do dicionário é executada em segundo plano e verifica todos os dados de grafos e do dicionário para encontrar termos que não estão em uso. Uma nova execução é acionada na inicialização quando aproximadamente 6% dos dados são alterados. Ele lida com threads de consulta para recursos do nó principal, como CPU, cache de buffer, geração de registros de desfazer e I/O operações de gravação, o que pode afetar negativamente a taxa de transferência da consulta. Como a GC verifica dados que não são ativamente afetados por consultas, ele pode afetar o cache do buffer no nó do gravador. O cluster pode ver I/O operações de gravação adicionais e ter mais registros de desfazer para limpar à medida que o GC realiza novas exclusões, o que também pode resultar em valores mais altos para a métrica. UndoLogListSize
A GC pode ser executada em dois modos, soft_delete e enabled. Quando executadas no modo soft_delete, as entradas não utilizadas do dicionário são marcadas como excluídas (soft_delete), mas não são excluídas explicitamente. Esse modo também pode ser usado para entender as características de desempenho após a ativação da operação em segundo plano. Quando o modo habilitado é usado, as entradas são excluídas explicitamente (exclusão “definitiva”). É recomendável executar a GC no modo soft_delete por um tempo antes de mudar para o modo enabled.
A GC de dicionário é compatível com uma simultaneidade máxima de 16 (em máquinas com 16 ou mais núcleos). Ela é executada por padrão com um único thread, mas pode ser executada com maior simultaneidade quando habilitada pela primeira vez. Os threads da GC de dicionário são executados com a mesma prioridade que os threads de consulta e lidam com os recursos do escritor da mesma forma.
A GC de dicionário pode ser habilitada pelo parâmetro neptune_lab_mode definindo a chave DictionaryGCMode. Ela aceita três valores possíveis: disabled (padrão), soft_delete ouenabled. Por exemplo, o seguinte exemplo de código definiria DictionaryGCMode como soft_delete:
neptune_lab_mode = 'DictionaryGCMode=soft_delete'
O parâmetro de simultaneidade, DictionaryGCConcurrency, é opcional e pode ter um valor entre 1 e 16. Se definido com um valor maior do que o mínimo de 16 e o número de núcleos, a simultaneidade é limitada a esse valor.
neptune_lab_mode = 'DictionaryGCMode=soft_delete,DictionaryGCConcurrency=2'
A tarefa de GC do dicionário é habilitada em segundo plano após a inicialização do servidor, quando há alguns dados disponíveis. O status do mecanismo exibe o status atual da GC de dicionário. O exemplo de saída mostrado abaixo mostra que a GC de dicionário está no modo soft_delete e em execução com uma simultaneidade de 2. Se a tarefa em segundo plano estiver em execução, ela pode estar procurando ativamente entradas de dicionário não utilizadas e as excluindo ou esperando que um novo conjunto de exclusões acione uma nova rodada de GC.
{"status":"healthy",...,"labMode":{"ObjectIndex":"disabled","DictionaryGC":"{Mode=enabled,Concurrency=2}"},...}
A GC de dicionário é pausada quando alguma dessas condições é atendida:
-
Carregamento em massa ativo.
-
A memória que pode ser liberada é inferior a 15 GB.
-
UndoLogListSizeé maior do que 1.000.000.