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. 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.
Compatibilidade com versões de motor anteriores à 1.4.8.0
Antes da versão 1.4.8.0 do mecanismo, você podia habilitar o dicionário GC somente em clusters sem essa opção. neptune_streams O Neptune desativou automaticamente o recurso se neptune_streams estivesse ativado. O Neptune também desativou o recurso se existisse algum dado não expiradoneptune_streams. A partir da versão 1.4.8.0 do mecanismo, essa restrição não se aplica mais e você pode habilitar o dicionário GC em clusters habilitados. neptune_streams
Quando habilitado, as entradas não utilizadas do dicionário são limpas por um trabalho em segundo plano. Ele não reduzVolumeBytesUsed, mas 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. O GC compete com threads de consulta por recursos do servidor, como CPU, cache de buffer, geração de log de desfazer e I/O operações de gravação, reduzindo potencialmente 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 eliminar à medida que o GC realiza novas exclusões, o que também pode resultar em valores mais altos para a métrica. UndoLogListSize
O GC pode ser executado em dois modos, soft_delete e. enabled Quando executadas no soft_delete modo, as entradas de dicionário não utilizadas 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 enabled modo é usado, as entradas são excluídas explicitamente (exclusão 'forçada'). É 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.