mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2026-03-15 12:27:30 +01:00
Optimize usage dashboard: partial indexes, request cache, parallel histograms
- Add migration 14: partial covering indexes WHERE job_state='running' for user/project/subcluster groupings (tiny B-tree vs full table) - Inline literal state value in BuildWhereClause so SQLite matches partial indexes instead of parameterized placeholders - Add per-request statsGroupCache (sync.Once per filter+groupBy key) so identical grouped stats queries execute only once per GQL operation - Parallelize 4 histogram queries in AddHistograms using errgroup - Consolidate frontend from 6 GQL aliases to 2, sort+slice top-10 client-side via $derived Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Entire-Checkpoint: 5b26a6e5ff10
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
-- Reverse migration 14: Drop partial indexes for running jobs
|
||||
|
||||
DROP INDEX IF EXISTS jobs_running_user_stats;
|
||||
DROP INDEX IF EXISTS jobs_running_project_stats;
|
||||
DROP INDEX IF EXISTS jobs_running_subcluster_stats;
|
||||
@@ -0,0 +1,18 @@
|
||||
-- Migration 14: Partial covering indexes for running jobs
|
||||
-- Only running jobs are in the B-tree, so these indexes are tiny compared to
|
||||
-- the full-table indexes from migration 13. SQLite uses them when the query
|
||||
-- contains the literal `job_state = 'running'` (not a parameter placeholder).
|
||||
|
||||
CREATE INDEX IF NOT EXISTS jobs_running_user_stats
|
||||
ON job (cluster, hpc_user, num_nodes, num_hwthreads, num_acc, duration, start_time)
|
||||
WHERE job_state = 'running';
|
||||
|
||||
CREATE INDEX IF NOT EXISTS jobs_running_project_stats
|
||||
ON job (cluster, project, num_nodes, num_hwthreads, num_acc, duration, start_time)
|
||||
WHERE job_state = 'running';
|
||||
|
||||
CREATE INDEX IF NOT EXISTS jobs_running_subcluster_stats
|
||||
ON job (cluster, subcluster, num_nodes, num_hwthreads, num_acc, duration, start_time)
|
||||
WHERE job_state = 'running';
|
||||
|
||||
PRAGMA optimize;
|
||||
Reference in New Issue
Block a user