You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: data-explorer/kusto/management/query-acceleration-policy.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,7 +22,7 @@ To enable query acceleration in the Fabric UI, see [Query acceleration over OneL
22
22
::: moniker-end
23
23
24
24
> [!IMPORTANT]
25
-
> To troubleshoot problems with query acceleration, see [Troubleshoot query acceleration over external delta tables](query-acceleration-tsg.md).
25
+
> To troubleshoot problems with query acceleration, see [Troubleshoot query acceleration over external delta tables](query-acceleration-troubleshooting-guide.md).
description: Learn how to troubleshoot query acceleration issues
2
+
title: Query Acceleration Troubleshooting Guide
3
+
description: Learn how to troubleshoot for common errors encountered in query acceleration.
4
4
ms.reviewer: urishapira
5
5
ms.topic: reference
6
-
ms.date: 12/01/2025
6
+
ms.date: 12/08/2025
7
7
---
8
8
9
9
# Troubleshoot query acceleration over external delta tables
@@ -18,7 +18,7 @@ The query acceleration feature consists of the following components:
18
18
- A background job that caches delta table data files.
19
19
- Query-time enhancements that utilize the catalog and the cached data.
20
20
21
-
To understand why things aren't working as expected, it's important to identify which of these components isn't functioning properly.
21
+
To understand why things aren't working as expected, you need to identify which of these components isn't functioning properly.
22
22
23
23
This article helps you troubleshoot scenarios where:
24
24
@@ -34,54 +34,57 @@ This article helps you troubleshoot scenarios where:
34
34
| project isnotnull(Policy) and todynamic(Policy).IsEnabled
35
35
```
36
36
37
-
If this command returns `false`, enable the query acceleration policy using the [`.alter query acceleration policy` command](alter-query-acceleration-policy-command.md).
37
+
If this command returns `false`, enable the query acceleration policy by using the [`.alter query acceleration policy` command](alter-query-acceleration-policy-command.md).
38
38
39
-
2. **Ensure the delta table complies with the Delta protocol.**
39
+
1. **Ensure the delta table complies with the Delta protocol.**
40
40
41
-
The query acceleration feature assumes a delta table that complies with the Delta protocol. Manual operations executed directly on the delta table (for example, editing transaction logs or parquet files) aren't supported and may result in unexpected behavior.
41
+
The query acceleration feature assumes a delta table that complies with the Delta protocol. Manual operations executed directly on the delta table (for example, editing transaction logs or parquet files) aren't supported and might result in unexpected behavior.
42
42
43
43
If such operations have been executed on the delta table, recreate the external table and re-enable the query acceleration policy.
44
44
45
+
## Common errors
45
46
46
-
## Query is returning stale data
47
+
### Query returns stale data
47
48
48
-
This is a data freshness issue: query results don't reflect the latest data from the underlying delta table.
49
+
This issue occurs when query results don't reflect the latest data from the underlying delta table.
49
50
50
51
Query acceleration refreshes the accelerated data periodically, so that results are no older than the configured `MaxAge` value in the policy.
51
-
By design, queries over accelerated external tables may return data that lags behind the latest delta table version by up to `MaxAge`. Set `MaxAge` to the maximum data staleness that is acceptable at query time.
52
+
By design, queries over accelerated external tables might return data that lags behind the latest delta table version by up to `MaxAge`. Set `MaxAge` to the maximum data staleness that is acceptable at query time.
52
53
53
54
You can control the effective `MaxAge` in two ways:
54
55
55
-
- Configure the `MaxAge` property in the query acceleration policy using the [`.alter query acceleration policy` command](alter-query-acceleration-policy-command.md).
56
+
- Configure the `MaxAge` property in the query acceleration policy by using the [`.alter query acceleration policy` command](alter-query-acceleration-policy-command.md).
56
57
- Override `MaxAge` per query by using the [`external_table()` operator's](../query/external-table-function.md) `MaxAgeOverride` parameter.
57
58
58
-
## Query isn't running fast enough
59
+
### Query over an accelerated external delta table is *slower* than expected
59
60
60
-
This is a performance issue: query is slower than expected, and acceleration doesn't appear to improve performance.
61
+
If a query is performing slower than anticipated and query acceleration doesn't seem to enhance performance, consider the following potential causes:
61
62
62
-
There are a few reasons why this could happen:
63
+
- **Unusable query acceleration catalog**: The catalog may be outdated or not yet built. Refer to the [Troubleshoot unusable catalogs](#troubleshoot-unusable-catalogs) section to check if this is the case.
64
+
- **Query accessing non-accelerated data**: The query might be scanning data that hasn't been cached. See the [Troubleshoot queries over nonaccelerated data](#troubleshoot-queries-over-nonaccelerated-data) section to check if this is the case.
65
+
- **Non-compliance with KQL best practices**: Ensure the query adheres to KQL best practices. Refer to the [KQL best practices](../query/best-practices.md) guide for optimization techniques.
63
66
64
-
- The query acceleration catalog is unusable (out-of-date or never built) - see section [Check if catalog is unusable](#check-if-catalog-is-unusable)
65
-
- The query scans nonaccelerated data - see section [Check if query is over nonaccelerated data](#check-if-query-is-over-nonaccelerated-data)
66
-
- The query doesn't comply with KQL best practices - see [KQL best practices](../query/best-practices.md)
67
+
## Troubleshooting steps
67
68
68
-
## Check if catalog is unusable
69
+
### Troubleshoot unusable catalogs
70
+
71
+
#### Step 1: Check for unusable catalogs
69
72
70
-
Query acceleration uses a local catalog for the external table containing a snapshot of the delta table metadata. If this catalog hasn't been updated within the configured `MaxAge` (see the query acceleration policy's `MaxAge` property), it's considered **unusable** and isn't used at query time. In that case, queries fall back to reading the remote delta table directly, which can be significantly slower.
73
+
Query acceleration uses a local catalog for the external table that contains a snapshot of the delta table metadata. If this catalog isn't updated within the configured `MaxAge` (see the query acceleration policy's `MaxAge` property), it's considered **unusable** and isn't used at query time. In this case, queries fall back to reading the remote delta table directly, which can be significantly slower.
71
74
72
-
Fetch the current state of the catalog using the following command:
75
+
Retrieve the current state of the catalog with the following command:
- If the state is **healthy** but the catalog is still stale, it could be that the query acceleration policy was enabled recently. See [Query acceleration policy was enabled recently](#query-acceleration-policy-was-enabled-recently)
95
-
- If the state is **unhealthy**, refer to [Query acceleration unhealthy state – understanding and mitigating](#query-acceleration-unhealthy-state--understanding-and-mitigating).
96
-
97
-
98
-
#### Query acceleration policy was enabled recently
99
-
100
-
When the query acceleration policy is enabled for the first time, building the initial catalog needs to complete before it can be used in queries. During this period, the `LastUpdatedDateTime` value is empty:
If `LastUpdatedDateTime` is empty, allow some time for the first update to complete. This usually takes up to several minutes. Subsequent updates are expected to be significantly faster.
108
-
109
-
#### Query acceleration unhealthy state – understanding and mitigating
97
+
- If the state is **healthy** but the catalog is still stale, it could be that the query acceleration policy was enabled recently.
98
+
When you enable the query acceleration policy for the first time, the initial catalog needs to be built before you can use it in queries. During this period, the `LastUpdatedDateTime` value is empty:
If `LastUpdatedDateTime` is empty, allow some time for the first update to complete. This process usually takes up to several minutes. Subsequent updates are significantly faster.
110
106
111
-
When an external table's query acceleration is unhealthy, you can retrieve the unhealthy reason using the following command:
107
+
- If the state is **unhealthy**, you can retrieve the unhealthy reason by using the following command:
| Unhealthy reason | Example `NotHealthyReason` | Action |
@@ -156,11 +151,11 @@ Use the following table to understand and mitigate common unhealthy states.
156
151
157
152
::: moniker-end
158
153
154
+
### Troubleshoot queries over nonaccelerated data
159
155
160
-
## Check if query is over nonaccelerated data
161
-
162
-
To fully benefit from query acceleration, queries must be executed over **accelerated data**. Non-accelerated data is read directly from the remote delta table, which may result in significant latency.
156
+
#### Step 3: Check if query is over nonaccelerated data
163
157
158
+
To fully benefit from query acceleration, queries must be executed over accelerated data. Non-accelerated data is read directly from the remote delta table, which may result in significant latency.
164
159
Use the following command and filter on a time frame that includes the relevant query:
165
160
166
161
```kusto
@@ -169,66 +164,57 @@ Use the following command and filter on a time frame that includes the relevant
If `ExternalDataStats.iterated_artifacts` or `ExternalDataStats.downloaded_items` are greater than `0`, it means data was read from the remote delta table (non-accelerated path).
173
-
The following section helps you understand why.
167
+
If ExternalDataStats.iterated_artifacts or ExternalDataStats.downloaded_items are greater than 0, it means data was read from the remote delta table (non-accelerated path). The following section helps you understand why.
174
168
175
-
### Troubleshoot queries over nonaccelerated data
176
-
177
-
There are two main reasons why a query might read non-accelerated data:
178
-
179
-
- The query-time filter isn't fully within the query acceleration hot period or hot windows.
180
-
- The data within the policy hot period isn't fully cached.
181
-
182
-
#### Query filter isn't fully within the hot period or hot windows
183
-
184
-
Run the following command to view the hot caching properties and make sure the query filters match them:
Ensure your query's time filter is fully contained within the configured `Hot` period or the defined `HotWindows`.
193
-
194
-
If it's a one-time query, policy change isn't recommended. However, if you anticipate running multiple queries over the same time range that lies outside the configured `Hot` period or defined `HotWindows` and require improved performance, alter the policy by:
195
-
196
-
- Increasing the hot period, and/or
197
-
- Adding additional hot windows that match your query patterns.
169
+
A query might read nonaccelerated data for two main reasons:
198
170
199
-
#### Data within the hot period isn't fully cached
171
+
-**The query-time filter isn't fully within the query acceleration hot period or hot windows**.
172
+
Run the following command to view the hot caching properties and make sure the query filters match them:
200
173
201
-
Use the following command to check the acceleration progress:
202
-
203
-
```kusto
204
-
.show external table [ETName] details
205
-
| project state = todynamic(QueryAccelerationState)
- If `CompletionPercentage < 100`, allow more time for data to be accelerated.
210
-
- If `CompletionPercentage` doesn't increase over time, follow the guidance in [Understanding and mitigating data acceleration issues](#understanding-and-mitigating-data-acceleration-issues).
Ensure your query's time filter is fully contained within the configured `Hot` period or the defined `HotWindows`.
181
+
182
+
If it's a one-time query, don't change the policy. However, if you anticipate running multiple queries over the same time range that lies outside the configured `Hot` period or defined `HotWindows` and require improved performance, alter the policy by:
183
+
184
+
- Increasing the hot period, and/or
185
+
- Adding additional hot windows that match your query patterns.
186
+
- **The data within the policy hot period isn't fully cached.**
187
+
Use the following command to check the acceleration progress:
188
+
189
+
```kusto
190
+
.show external table [ETName] details
191
+
| project state = todynamic(QueryAccelerationState)
- If `CompletionPercentage < 100`, allow more time for data to be accelerated.
196
+
- If `CompletionPercentage` doesn't increase over time, follow the guidance in [Understanding and mitigating data acceleration issues](#step-4-understanding-and-mitigating-data-acceleration-issues).
211
197
212
-
### Understanding and mitigating data acceleration issues
198
+
#### Step 4: Understanding and mitigating data acceleration issues
213
199
214
200
Unaccelerated data (`CompletionPercentage < 100`) can stem from several issues.
215
201
216
202
#### Data is currently being accelerated
217
203
218
204
Data acceleration might take time, especially when:
219
205
220
-
-A query acceleration policy has recently been enabled, or
221
-
-A significant amount of data was recently added to the delta table, or
222
-
-The delta table has undergone an optimization operation such as `OPTIMIZE` that results in many deleted and recreated files.
206
+
- You recently enabled a query acceleration policy.
207
+
- You recently added a significant amount of data to the delta table.
208
+
- You ran an optimization operation such as `OPTIMIZE` on the delta table that results in many deleted and recreated files.
223
209
224
-
Frequently running `OPTIMIZE` or `MERGE` operations on the source delta table that cause large-scale rewrites of data files can negatively affect acceleration performance because data files are repeatedly rewritten, and need to be accelerated.
210
+
Frequently running `OPTIMIZE` or `MERGE` operations on the source delta table that cause large-scale rewrites of data files can negatively affect acceleration performance because data files are repeatedly rewritten and need to be accelerated.
225
211
226
212
#### Data files aren't eligible for acceleration
227
213
228
-
Parquet data files larger than **1 GB**won't be cached.
214
+
Parquet data files larger than **1 GB** aren't cached.
229
215
230
216
If your delta table includes many large files, consider adjusting your data generation or optimization strategy to produce smaller parquet files.
231
-
If this requires recreating the Delta table, make sure you recreate the external table and re-enable query acceleration policy.
217
+
If this adjustment requires recreating the Delta table, make sure you recreate the external table and re-enable the query acceleration policy.
232
218
233
219
#### Insufficient cluster capacity or resources
234
220
@@ -245,5 +231,7 @@ Run the following command to view the remaining capacity:
245
231
- If `Remaining == 0` consistently and `CompletionPercentage` isn't increasing, consider:
246
232
247
233
- Scaling the cluster out or up to provide more resources.
248
-
- Increasing the `QueryAcceleration` capacity by [altering the capacity policy](alter-capacity-policy-command.md). NOTE: altering the capacity policy may have adverse effects on other operations. Alter the policy as a last resort at your own discretion.
234
+
- Increasing the `QueryAcceleration` capacity by [altering the capacity policy](alter-capacity-policy-command.md).
235
+
> [!NOTE]
236
+
> Altering the capacity policy might have adverse effects on other operations. Alter the policy as a last resort at your own discretion.
0 commit comments