Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Recopilación de elementos no utilizados en el diccionario de Neptune
Neptune admite la recopilación de elementos no utilizados (GC) en el diccionario, que se puede habilitar mediante el parámetro neptune_lab_mode para los datos de gráficos de propiedades. Se puede habilitar para clústeres que solo contengan datos de gráficos de propiedades cuando neptune_streams no esté habilitado. La característica se deshabilita automáticamente si neptune_streams está habilitado o si hay datos neptune_streams que no hayan caducado. La característica requiere el reinicio de la instancia del escritor para activarse. Esta característica está disponible a partir de la versión 1.4.3.0 del motor.
Cuando está habilitada, las entradas del diccionario que no se utilizan se limpian mediante un trabajo en segundo plano. No reduce VolumeBytesUsed, sino que libera espacio en el índice para nuevas inserciones. Es probable que la tasa de crecimiento de VolumeBytesUsed sea menor cuando la GC del diccionario está habilitada en comparación con cuando no lo está.
La recopilación de elementos no utilizados en el diccionario se ejecuta en segundo plano y analiza todos los datos del gráfico y del diccionario para encontrar términos que no se utilizan. Una vez que se ha modificado aproximadamente el 6 % de los datos, se activa una nueva ejecución en el arranque. Se enfrenta a subprocesos de consulta para recursos del nodo principal, como la CPU, la caché del búfer, la generación de registros de deshacer y I/O las operaciones de escritura, lo que podría afectar negativamente al rendimiento de las consultas. Dado que la GC analiza datos que las consultas no modifican activamente, puede afectar a la caché del búfer del nodo de escritura. El clúster podría realizar más I/O operaciones de escritura y tener más registros de deshacer que depurar a medida que GC realice nuevas eliminaciones, lo que también puede dar como resultado valores más altos para la métrica. UndoLogListSize
La GC se puede ejecutar en dos modos: soft_delete y enabled. Cuando se ejecuta en el modo soft_delete, las entradas del diccionario que no se utilizan se marcan como eliminadas (soft_delete), pero no se eliminan de forma explícita. Este modo también se puede utilizar para comprender las características de rendimiento una vez activada la operación en segundo plano. Cuando se utiliza el modo habilitado, las entradas se eliminan de forma explícita (eliminación “definitiva”). Se recomienda ejecutar la GC en el modo soft_delete durante un tiempo antes de cambiar al modo enabled.
La GC en el diccionario admite una simultaneidad máxima de 16 (en máquinas con 16 o más núcleos). Se ejecuta de forma predeterminada con un solo subproceso, pero se puede ejecutar con una mayor simultaneidad cuando se habilita por primera vez. Los subprocesos de GC en el diccionario se ejecutan con la misma prioridad que los subprocesos de consulta y compiten por los recursos del escritor de forma equitativa.
La GC en el diccionario se puede habilitar a través del parámetro neptune_lab_modeconfigurando la clave DictionaryGCMode. Acepta tres valores posibles: disabled (predeterminado), soft_delete oenabled. Por ejemplo, el siguiente ejemplo de código establece DictionaryGCMode en soft_delete:
neptune_lab_mode = 'DictionaryGCMode=soft_delete'
El parámetro de simultaneidad, DictionaryGCConcurrency, es opcional y puede tener un valor entre 1 y 16. Si se establece en un valor superior al mínimo de 16 y al número de núcleos, la simultaneidad se limita a ese valor.
neptune_lab_mode = 'DictionaryGCMode=soft_delete,DictionaryGCConcurrency=2'
El trabajo de GC en el diccionario se habilita en segundo plano después de que se inicie el servidor, una vez que hay datos disponibles. El estado del motor muestra el estado actual de GC en el diccionario. El ejemplo de salida que se muestra a continuación indica que la GC en el diccionario está en modo soft_delete y se ejecuta con una simultaneidad de 2. Si el trabajo en segundo plano se está ejecutando, puede que esté buscando activamente entradas del diccionario que no estén en uso y eliminándolas, o esperando a que un nuevo conjunto de eliminaciones active una nueva ronda de GC.
{"status":"healthy",...,"labMode":{"ObjectIndex":"disabled","DictionaryGC":"{Mode=enabled,Concurrency=2}"},...}
La GC en el diccionario se detiene cuando se cumple cualquiera de estas condiciones:
-
Carga masiva activa.
-
La memoria que se puede liberar es inferior a 15 GB.
-
UndoLogListSizees superior a 1 000 000.