Optimize stale todo resolution performance
## Goal
Optimize for high-scale deployments. Add database index and performance monitoring.
🎯 **Optional but recommended for GitLab.com scale**
Related to #20637
Can be done in parallel with or after Phase 1d
## Implementation Details
### 1. Database Index Migration
**Location:** `db/migrate/XXXXXX_add_index_for_stale_todos.rb`
Add partial index for query optimization:
- Columns: `[:target_type, :target_id, :state, :action]`
- WHERE clause: `state = 'pending' AND target_type = 'MergeRequest'`
- Use `add_concurrent_index` for zero-downtime
### 2. Performance Instrumentation
Add logging for large batch resolutions and Prometheus metrics.
## Test Coverage Required
- [ ] Migration tests
- [ ] Performance benchmarks (100+ todos)
- [ ] Verify index is used in query plans
## Files to Create
- [ ] `db/migrate/XXXXXX_add_index_for_stale_todos.rb`
- [ ] `spec/migrations/XXXXXX_add_index_for_stale_todos_spec.rb`
- [ ] Update `app/services/todo_service.rb` with instrumentation
## Acceptance Criteria
- [ ] Index created successfully
- [ ] Migration uses concurrent index
- [ ] Query performance improves
- [ ] Database review approved
## Expected Improvements
- Query time: 50-100ms → <10ms
- Consistent performance regardless of table size
**Estimated Effort:** 2-3 days
issue