Add indexes for chat_files purge query when chats graduate from experimental
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 50/100
Línea de trabajo
Comienza con la consulta SQL DeleteOldChatFiles en dbpurge e inspecciona las CTE kept_file_ids y deletable, incluidos sus filtros, ordenación y límite. Compara el plan de consulta antes y después de añadir los índices de apoyo o dividir las CTE; se considera terminado cuando el purge evita los escaneos secuenciales y la ordenación indicados con datos a escala de producción.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Context
PR https://github.com/coder/coder/pull/23833 adds periodic cleanup of chat_files to dbpurge. The DeleteOldChatFiles SQL query does a sequential scan of both chats and chat_files because there are no supporting indexes. This is acceptable while chats are experimental with low row counts, but needs to be addressed before chats see production-scale traffic.
Flagged by Database Reviewer (P2), Edge Case Analyst (P2), and Go Architect during deep-review.
What needs indexing
1. chats table — kept_file_ids CTE
The CTE SELECT DISTINCT unnest(file_ids) FROM chats WHERE archived = false OR updated_at >= @before_time does a full seq scan with no index on archived or (archived, updated_at). The OR condition prevents the planner from using existing indexes. Cost scales with total_chats × avg(file_ids length).
Options:
CREATE INDEX ON chats (updated_at) WHERE archived = true+ split CTE into two UNIONed queries- Composite index on
(archived, updated_at)
2. chat_files table — deletable CTE
The CTE filters WHERE cf.created_at < @before_time and orders by created_at ASC with a LIMIT. No index on created_at means full scan + sort. Since chat_files rows carry bytea blob data, rows are wide — making the scan expensive per row.
Fix: CREATE INDEX idx_chat_files_created_at ON chat_files (created_at)
When
Before chats graduate from experimental status / see production-scale traffic.
- Lenguaje dominante
- Sin datos de lenguaje
- Estrellas
- 3
- Forks
- 0
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de coder/internal
-
flake
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
-
flake
-
flake
Todos los issues de coder/internal
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
xinnan-tech/xiaozhi-fde-talk#263 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
ClickHouse/clickhouse-connect#1066 · 5 reacciones ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100