From 9c285c06e1065077d02efdcf61dbf78f0db47843 Mon Sep 17 00:00:00 2001 From: hoang Date: Wed, 30 Sep 2026 12:24:49 +0700 Subject: [PATCH] Prefetch custom labels when rendering config The render_config() function iterates over the exporters. However, since custom labels are associated with Services and Projects, this can lead to multiple queries (the N+1 query problem), reducing performance. To address this, we've prefetched the custom labels for services and projects to avoid additional database queries for each exporter. --- promgen/prometheus.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/promgen/prometheus.py b/promgen/prometheus.py index 16bfb2b8b..2857e27bd 100644 --- a/promgen/prometheus.py +++ b/promgen/prometheus.py @@ -107,7 +107,11 @@ def render_config(service=None, project=None, services=None, projects=None, farm for exporter in models.Exporter.objects.prefetch_related( "project__farm__host_set", "project__farm", + "project__service__custom_labels__custom_label", + "project__service__custom_labels", "project__service", + "project__custom_labels__custom_label", + "project__custom_labels", "project__shard", "project", ):