<@U0A71G31CDV> trying to run ANALYZE on a table - ...
# questions-and-troubleshooting
d
@Rocky trying to run ANALYZE on a table - jobs are filing with this:
Copy code
insert statistic job failed due to too many failed tasks: 1/6, the last failure is com.starrocks.common.DdlException: Analyze job timeout exceeded
How to mitigate?
r
The error message
Analyze job timeout exceeded
indicates that the internal query StarRocks uses to collect statistics (which is often an
INSERT INTO ... SELECT ...
into internal metadata tables) is taking longer than the allowed timeout. To mitigate this, you can increase the relevant timeout settings or reduce the workload of the
ANALYZE
job. 1. Increase the Timeout Configuration There are two main configurations that control the timeout for statistics collection: *
statistic_collect_query_timeout
(FE Config):
This is the primary parameter controlling the timeout for internal statistics collection queries. The default is typically
3600
seconds (1 hour). You can increase it globally via:
Copy code
sql
    ADMIN SET FRONTEND CONFIG ("statistic_collect_query_timeout" = "7200"); -- e.g., 2 hours
*
insert_timeout
(System Variable):
Because statistics collection often involves an internal
INSERT
operation, this variable can also impact the job.
Copy code
sql
    SET GLOBAL insert_timeout = 28800; -- 8 hours
2. Use Sampled Collection for Large Tables If you are running a
FULL
analysis on a very large table, it may naturally time out. You can switch to a
SAMPLE
collection, which is much faster and usually sufficient for the optimizer.
Copy code
sql
-- Replace FULL with SAMPLE
ANALYZE SAMPLE TABLE your_table_name;
You can also tune the sample size using properties:
Copy code
sql
ANALYZE SAMPLE TABLE your_table_name 
PROPERTIES(
    "statistic_sample_collect_rows" = "1000000"
);
3. Check Query Queuing (if enabled) If you have query queuing enabled (
enable_query_queue = true
), the analyze job might be stuck in a queue. Check the variable
query_queue_pending_timeout_second
. If the job waits in the queue longer than this limit, it will fail.
Copy code
sql
SET GLOBAL query_queue_pending_timeout_second = 600; -- Increase queue wait time
4. Analyze Specific Columns Instead of analyzing the entire table (all columns), you can analyze only the columns used in join keys, filters, or group-by clauses. This significantly reduces the amount of data the job needs to process.
Copy code
sql
ANALYZE TABLE your_table_name (col1, col2, col3);
Troubleshooting Steps: * Check Status: Run `SHOW ANALYZE STATUS WHERE
table
= 'your_table_name';` to see the exact start and end times and verify if it's hitting exactly the 1-hour or 5-minute mark. * Check FE Logs: Look at
fe.log
or
fe.warn.log
for the specific query ID associated with the failed statistics job. You can find the query being run internally, which can help determine if it's a resource issue (CPU/Memory) or a pure timeout. timeout or a hard limit. References • administration/management/FE_configuration.md • sql-reference/sql-statements/cbo_stats/ANALYZE_TABLE.md • using_starrocks/Cost_based_optimizer.md