Add indexes for chat_files purge query when chats graduate from experimental
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 50/100
Hướng nghiên cứu
Bắt đầu với truy vấn SQL DeleteOldChatFiles trong dbpurge và kiểm tra các CTE kept_file_ids và deletable, bao gồm các bộ lọc, thứ tự sắp xếp và giới hạn của chúng. So sánh kế hoạch truy vấn trước và sau khi thêm các chỉ mục hỗ trợ hoặc tách CTE; hoàn thành khi purge tránh được các lần quét tuần tự và thao tác sắp xếp đã báo cáo trên dữ liệu ở quy mô production.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Không có dữ liệu ngôn ngữ
- Star
- 3
- Fork
- 0
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Chúng tôi chưa kiểm tra các tệp thiết lập môi trường của dự án này. Hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của coder/internal
-
flake
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
chore: cleanup http transport debtCó thể đã có người làm @sreya đã nhận 1 ngày trước. Đang mở
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
-
flake: TestPubsubCluster/ClusterAuthRequiredCó thể làm lại được @sreya đã nhận 52 ngày trước và không có pull request nào đang mở. Đang mởflake
Tất cả issue của coder/internal
Issue tương tự
-
vector-store
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 90/100
mem0ai/mem0#7461 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
BasedHardware/omi#19010 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
vavallee/bindery#2793 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày