Skip to content

Lite UI responsiveness overhaul + Query Store collector optimization (#510)#514

Merged
erikdarlingdata merged 2 commits intodevfrom
feature/visible-tab-refresh
Mar 11, 2026
Merged

Lite UI responsiveness overhaul + Query Store collector optimization (#510)#514
erikdarlingdata merged 2 commits intodevfrom
feature/visible-tab-refresh

Conversation

@erikdarlingdata
Copy link
Owner

Summary

  • Visible-tab-only refresh: Timer ticks now refresh only the active main tab instead of all 13 tabs
  • Sub-tab awareness: Within Queries, Blocking, and Memory tabs, only the visible sub-tab refreshes
  • Query Store collector: Stopped collecting unused plan XML blobs + added LOOP JOIN hint (6-18s → ~600ms)
  • Tab switch guard: _isRefreshing flag prevents tab switch handler from competing with timer ticks

Benchmark results (TPC-C load on SQL2022)

Scenario Before After Improvement
Lite idle 6-13s 546-750ms ~90%
Lite under TPC-C 6-13s ~3s ~70%
Dashboard idle 5.6s 0.6-0.8s 86%
Dashboard under TPC-C 5.6s 1.8-2.0s 64%

Test plan

  • Verified under TPC-C load testing with HammerDB
  • Monitored MethodProfile and SlowQueries logs for 2+ hours
  • Confirmed stable idle performance at ~580ms avg
  • No new slow query entries after optimizations
  • Tab switching no longer causes "not responding"

🤖 Generated with Claude Code

erikdarlingdata and others added 2 commits March 10, 2026 20:13
Lite timer tick: 6-13s → ~900ms idle, ~3s under TPC-C load.

UI refresh changes:
- Timer tick and manual refresh now only query the visible tab/sub-tab
- Sub-tab awareness for Queries (8→1-4 queries), Memory (5→1-3),
  and Blocking (7→1-3) tabs
- Added _isRefreshing guard to tab switch handler to prevent DuckDB
  contention with timer ticks causing "not responding" freezes
- Lightweight GetAlertCountsAsync replaces full row fetches for badge

Query Store collector optimizations:
- Stop collecting plan XML (CONVERT nvarchar(max) → NULL) — plans are
  fetched on-demand via FetchQueryStorePlanAsync, pre-cached XML was
  never used. DuckDB write: 6-16s → ~230ms
- Added LOOP JOIN hint — SQL time: 374-1100ms → ~300ms (30x faster
  in isolated benchmarks)

Dashboard visible-tab-only refresh carried forward from prior session.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Timer tick and Query Store collector before/after numbers
from TPC-C load testing on SQL2022.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 66334a4 into dev Mar 11, 2026
3 checks passed
@erikdarlingdata erikdarlingdata deleted the feature/visible-tab-refresh branch March 11, 2026 01:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant