Performance troubleshooting
When a report is slow, identify which loading status is taking the time, then jump to the matching symptom below. For warehouse-side investigation (slow query execution, high CPU, EXPLAIN ANALYZE), see Diagnose data warehouse issues at the bottom.
"My report takes too long to load"
Try to narrow down to one of the more specific symptoms below (Pending, Running query, Processing result, Loading, or Fetching result).
"My report takes too long at Pending status"
Causes
- Your Report job queue is overloaded
- And/or this user has reached their Per-user Report Job Limit
Resolution
- Validate the cause using Blocked Jobs Analysis of Job Performance Analytics
- Possible optimizations:
- Optimize slow jobs (see "Running query…" below) to free up Report workers
- Disable Dashboard Auto-run
- Increase the Per-user Report Job Limit
- Request to increase your Report Workers
- Adjust Unused Job Timeout
"My report takes too long at Running query… status"
Causes
Without Holistics Canal
- The query execution is taking long on your Data Warehouse → see "My query takes too long to run on the data warehouse" below
- And/or the query result is too big and slow to fetch back to Holistics. Try:
- Migrating to a Holistics Data Center physically closer to your Data Warehouse
- Reducing data points
- Enabling Holistics Canal
With Holistics Canal
- The query execution is taking long on your Data Warehouse → see "My query takes too long to run on the data warehouse" below
Notes
- How to validate the cause:
- Compare Holistics Job Logs against your Data Warehouse logs (Holistics Job Logs are in Job Monitoring)
- Compare against the execution/query plan on the Data Warehouse (e.g. using
EXPLAIN ANALYZE) — see Run EXPLAIN ANALYZE on slow/suspected queries - Try downloading the data from the Data Warehouse console and time the download
"My query takes too long to run on the data warehouse"
Causes
- The query is costly/complex and slow by itself
- Check the execution/query plan on the Data Warehouse (e.g.
EXPLAIN ANALYZE) — see Run EXPLAIN ANALYZE on slow/suspected queries - Possible optimizations:
- Pre-aggregate data, manually or with Aggregate Awareness
- Use Query Parameters to push down predicates and use database indexing more efficiently
- Persist your query with Model Persistence (or database materialized views, dbt persistence, etc.)
- Add indexes/clustering/partitioning on the Data Warehouse
- Check the execution/query plan on the Data Warehouse (e.g.
- The Data Warehouse is overloaded
- Increase resources (CPU, memory) on the Data Warehouse
For deeper warehouse-side diagnosis, see Diagnose data warehouse issues below.
"My report takes too long at Processing result status"
Causes
- The query result is too big — slow to cache or render in Holistics
Resolution
"My report takes too long at Loading status"
Possible causes:
- Holistics is taking long on report pre-processing — usually because your modeling code is large or complex
- The browser is slow to communicate with Holistics servers, typically because:
- Your internet connection
- You're physically distant from Holistics Data Center → consider migrating to a closer Data Center
- And/or your modeling code is large
We continuously improve the Loading step. If it's still slow, contact [email protected] with:
- The URL of the page
- The Report or Dashboard title
- The duration of the Loading status
"My report takes too long at Fetching result… status"
This status only appears when Holistics Canal is enabled.
Causes
- The query result is too big and slow to fetch back to Holistics
Resolution
- Migrate to a Holistics Data Center physically closer to your Data Warehouse
- Reduce data points
"My users complain about performance but I don't know where to start"
Use Job Performance Analytics.
Other / unmatched
If your performance issue doesn't match any symptom above, or the suggested solutions don't work, contact Holistics Support with as much of the following as possible:
- The URL of the page
- The duration you experienced and the duration you expected
- Screen recordings or screenshots
- The steps that led to the issue
- If a job is involved, follow Report slow-running jobs
Diagnose data warehouse issues
This section covers warehouse-side investigation methods — long-running jobs, repeated failures, CPU usage, and query plans. Use it together with the symptom-based diagnosis above when the issue points back to your data warehouse.
Investigation methods
Identify long-running jobs in Job Monitoring
See Job Monitoring.
Check if there are many failed jobs with the same errors
If multiple jobs fail in a short window, the cause is often systemic — usually in the data warehouse layer. Common patterns:
- DB fails to write Persisted Models
- DB out of memory
- DB connection refused
- DB connection timed out
To investigate:
-
Open Job Monitoring Dashboard.
-
Look for many jobs failing with the same error. The screenshots below show jobs failing because of issues on the data warehouse side.
Check if CPU utilization of your data warehouse is high
Not every data warehouse offers CPU utilization monitoring. If yours doesn't, look up workarounds for your specific warehouse.
If CPU utilization is high, SQL queries take a long time to process. Commands like cancelling a job won't even run because the database is unresponsive.
Common causes of high CPU utilization:
- High number of logical reads, due to:
- Queries that lack indexes
- Outdated index statistics
- Inefficient queries
- Increased workload
To investigate:
- Check the CPU utilization metric on your warehouse:
- If CPU is frequently abnormally high, list the long-running queries during peak periods:
- Send these queries to Holistics Support.
Run EXPLAIN ANALYZE on slow/suspected queries
EXPLAIN ANALYZE reveals the query plan — useful for identifying which parts of a slow query take the most time.
General instructions
-
In Holistics, get the generated SQL of your slow job.
Go to Job Monitoring and find the slow job's logs. Copy the generated SQL — Holistics-generated SQL has a
/* - Job ID: xxxxxxxxxx* */comment at the top.
-
Append
EXPLAIN ANALYZEand run it against your data warehouse.Paste the SQL into your DB engine, prepend
EXPLAIN ANALYZE, and run. Send the output to Holistics if you're not sure how to interpret it.To visualize the query plan, paste it into a tool like explain.depesz.com.
Snowflake-specific instructions
-
Same as step 1 of General Instructions.
-
Find the full query in the Snowflake UI:
- Search the History page using SQL text parameters
- Or re-run the SQL in Holistics Editor
Then go to Snowflake's History page and look for the latest query.
-
Get detailed query info.
infoWhen sending troubleshooting info to Holistics, include the Query Detail view and all Query Profile screenshots.
Click the SQL to open the Query Detail view.
Navigate to the Query Profile tab — there can be multiple profile tabs, check all of them.
References
Mitigation methods
Cancel long-running jobs in Holistics
Manually cancel jobs in your data warehouse
For jobs that can't be cancelled via Job Monitoring (e.g. field-suggestion jobs), cancel them from the warehouse directly.
-
Get the pid of the long-running process. Check the query column to confirm it's the right one:
select * from pg_stat_activitywhere query_start < now() - interval '1 hour' -
Cancel the long-running process:
select pg_cancel_backend(the_pid_collected_from_step_1)
Improvement methods
Add table indexing/partitioning/clustering keys where relevant
Indexes can dramatically improve query speed and reduce CPU usage on your warehouse.
- Add indexes where the query plan suggests they help:
- Run
EXPLAIN ANALYZEagain to confirm the indexes are used.
Adding indexes speeds up reads but slows inserts and uses extra disk. Consider trade-offs — see this overview.
Increase data warehouse computing resources
Each data warehouse has its own scaling tools. A few examples:
- Redshift:
Optimize your reports
See Common levers on the Performance overview.