Saltearse al contenido

Tuning

La mayoría de los workloads corren bien con defaults. Recurrir a estas perillas cuando se midió un bottleneck específico.

Cuando la latencia es el problema

  1. Profilear por etapa:

    Ventana de terminal
    export NAMIDB_PROFILE_DUMP=1

    Esto identifica si el tiempo está en parse, lower, optimise o execute.

  2. EXPLAIN VERBOSE para ver el plan y las estimaciones de selectividad.

  3. Si execute domina y el plan se ve razonable, probar factorization:

    Ventana de terminal
    export NAMIDB_FACTORIZE=1

    Gran ganancia en queries con muchos paths (IC09, IC11) donde los resultados intermedios explotan bajo evaluación no factorizada.

Cuando la memoria es el problema

Limitar los caches:

Ventana de terminal
export NAMIDB_ADJACENCY_BUDGET_MB=256
export NAMIDB_NODE_CACHE_BUDGET_MB=256
export NAMIDB_SST_CACHE_BUDGET_MB=512

Los tres están acotados por evicción — nunca exceden el presupuesto.

O desactivar uno por completo:

Ventana de terminal
export NAMIDB_ADJACENCY=off
export NAMIDB_NODE_CACHE=off

Para el caso de uso embebido dentro de contenedores chicos / Lambdas, un perfil común es “NodeCache chico, sin SstCache, AdjacencyCache completo”.

Cuando el write throughput es el problema

  • Bulk-stage en lugar de CREATE por fila — usar merge_nodes / merge_edges desde Python, o upsert_node / upsert_edge desde Rust. Estos amortizan un solo commit_batch() sobre miles de filas.

  • Aumentar el intervalo de flush en namidb-server si se hacen workloads de write en ráfaga:

    Ventana de terminal
    --flush-interval 5m

    Memtables más grandes → menos SSTs L0 → menos trabajo de compaction.

  • Shardear por namespace. Cada namespace tiene un solo writer. Dos workloads no relacionados sobre dos namespaces duplican el write throughput.

Cuando la latencia de cold-read es el problema

Esto está dominado por el fetch de SST desde el bucket. Opciones:

  • Acercar el daemon al bucket. Misma región, misma VPC.
  • Pre-calentar con una query única que toque el working set — las queries subsiguientes pegan en el SST cache.
  • Subir NAMIDB_SST_CACHE_BUDGET_MB para que el working set entre.

Ver también