catalog-backend: add missing index on relations.target_entity_ref
The relations table had indexes on originating_entity_id and source_entity_ref but none on target_entity_ref. Several query paths join or filter on this column: - Orphan deletion (LEFT JOIN relations ON target_entity_ref) - Entity ancestry (INNER JOIN relations ON target_entity_ref) - Eager pruning (JOIN relations ON target_entity_ref) Without an index these queries seq-scan the full table (~3.5M rows, 714 MB heap). On a production replica, a single point lookup takes ~122ms via seq scan. With the index it drops to <1ms. The index is ~141 MB based on column width (~35 bytes avg) across ~3.5M rows. On PostgreSQL it's created with CONCURRENTLY to avoid blocking reads/writes. Signed-off-by: Fredrik Adelöw <freben@gmail.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Fredrik Adelöw <freben@gmail.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-backend': patch
|
||||
---
|
||||
|
||||
Added a missing index on `relations.target_entity_ref`. Several query paths (orphan deletion, entity ancestry, eager pruning) join or filter on this column, but no index existed — causing full sequential scans of the relations table on every invocation. On a production catalog with ~3.5M relation rows, individual lookups were taking ~122ms (full table scan) instead of <1ms (index scan).
|
||||
Reference in New Issue
Block a user