Estimate query load a Grafana dashboard places on its underlying data sources.
Each panel issues its own query on every auto-refresh tick: queries per viewer per second = panels / refresh_interval. Multiple concurrent viewers multiply that rate directly since each browser session refreshes independently by default. Concurrent query load (rate × average query duration) approximates how many queries are in flight on the data source at any instant — this is the number that actually determines datasource CPU/memory pressure, not the raw query rate alone.
load_time_sec = panels × avg_query_time_sec × (1 + concurrent_users × contention_factor)
Not by default for live dashboards — each browser session independently issues its own queries on refresh. Grafana Enterprise/Cloud query caching, or a caching proxy in front of the data source, can substantially cut this load for popular dashboards.
Query rate is inversely proportional to refresh interval, so halving the interval doubles the query rate — for dashboards with many viewers, this compounds quickly and is often the first thing worth increasing when a data source is under load.
Not necessarily — panels querying the same underlying series with different visualizations can sometimes share a single query via Grafana's mixed data sources or query result transformations, cutting effective panel-to-query ratio below 1:1.
For dashboards viewed by many people simultaneously, 30-60 seconds is a common balance; sub-10-second refresh is usually reserved for small, single-viewer, incident-response dashboards where up-to-the-second data matters more than aggregate load.