Skip to content

Commit 4ac5e9e

Browse files
Learn Build Service GitHub AppLearn Build Service GitHub App
authored andcommitted
Merging changes synced from https://github.com/MicrosoftDocs/dataexplorer-docs-pr (branch live)
2 parents 994f137 + 0237c88 commit 4ac5e9e

File tree

3 files changed

+82
-94
lines changed

3 files changed

+82
-94
lines changed

data-explorer/kusto/management/query-acceleration-policy.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ To enable query acceleration in the Fabric UI, see [Query acceleration over OneL
2222
::: moniker-end
2323

2424
> [!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).
2626
2727
## Limitations
2828

data-explorer/kusto/management/query-acceleration-tsg.md renamed to data-explorer/kusto/management/query-acceleration-troubleshooting-guide.md

Lines changed: 80 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
2-
title: query acceleration troubleshooting guide
3-
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.
44
ms.reviewer: urishapira
55
ms.topic: reference
6-
ms.date: 12/01/2025
6+
ms.date: 12/08/2025
77
---
88

99
# Troubleshoot query acceleration over external delta tables
@@ -18,7 +18,7 @@ The query acceleration feature consists of the following components:
1818
- A background job that caches delta table data files.
1919
- Query-time enhancements that utilize the catalog and the cached data.
2020

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.
2222

2323
This article helps you troubleshoot scenarios where:
2424

@@ -34,54 +34,57 @@ This article helps you troubleshoot scenarios where:
3434
| project isnotnull(Policy) and todynamic(Policy).IsEnabled
3535
```
3636
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).
3838
39-
2. **Ensure the delta table complies with the Delta protocol.**
39+
1. **Ensure the delta table complies with the Delta protocol.**
4040
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.
4242
4343
If such operations have been executed on the delta table, recreate the external table and re-enable the query acceleration policy.
4444
45+
## Common errors
4546
46-
## Query is returning stale data
47+
### Query returns stale data
4748
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.
4950
5051
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.
5253
5354
You can control the effective `MaxAge` in two ways:
5455
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).
5657
- Override `MaxAge` per query by using the [`external_table()` operator's](../query/external-table-function.md) `MaxAgeOverride` parameter.
5758
58-
## Query isn't running fast enough
59+
### Query over an accelerated external delta table is *slower* than expected
5960
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:
6162
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.
6366
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
6768
68-
## Check if catalog is unusable
69+
### Troubleshoot unusable catalogs
70+
71+
#### Step 1: Check for unusable catalogs
6972
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.
7174
72-
Fetch the current state of the catalog using the following command:
75+
Retrieve the current state of the catalog with the following command:
7376
7477
```kusto
7578
.show external table [ETName] details
7679
| extend MinimumUpdateTime = now() - totimespan(todynamic(QueryAccelerationPolicy).MaxAge)
7780
| project IsCatalogUnusable = MinimumUpdateTime > todatetime(todynamic(QueryAccelerationState).LastUpdatedDateTime)
7881
```
7982

80-
`IsCatalogUnusable == true` indicates the catalog is stale and query acceleration won't be used.
83+
`IsCatalogUnusable == true` indicates the catalog is stale and query acceleration isn't used.
8184

82-
### Troubleshoot unusable catalogs
85+
#### Step 2: Check query acceleration state health
8386

84-
To understand why a catalog is unusable, first check if the query acceleration state is healthy and resolve unhealthy reasons as needed.
87+
To understand why a catalog is unusable, check if the query acceleration state is healthy and resolve unhealthy reasons as needed.
8588

8689
Run:
8790

@@ -91,29 +94,22 @@ Run:
9194
| project IsHealthy = state.IsHealthy, UnhealthyReason = state.NotHealthyReason
9295
```
9396

94-
- 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:
101-
102-
```kusto
103-
.show external table [ETName] details
104-
| project todynamic(QueryAccelerationState).LastUpdatedDateTime
105-
```
106-
107-
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:
99+
100+
```kusto
101+
.show external table [ETName] details
102+
| project todynamic(QueryAccelerationState).LastUpdatedDateTime
103+
```
104+
105+
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.
110106
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:
112108
113-
```kusto
114-
.show external table [ETName] details
115-
| project todynamic(QueryAccelerationState).NotHealthyReason
116-
```
109+
```kusto
110+
.show external table [ETName] details
111+
| project todynamic(QueryAccelerationState).NotHealthyReason
112+
```
117113
118114
Use the following table to understand and mitigate common unhealthy states.
119115
@@ -126,7 +122,6 @@ Use the following table to understand and mitigate common unhealthy states.
126122
> .alter-merge external table [ETName] policy query_acceleration @'{"IsEnabled":true}'
127123
>```
128124
129-
130125
::: moniker range="azure-data-explorer"
131126
132127
| Unhealthy reason | Example `NotHealthyReason` | Action |
@@ -156,11 +151,11 @@ Use the following table to understand and mitigate common unhealthy states.
156151
157152
::: moniker-end
158153
154+
### Troubleshoot queries over nonaccelerated data
159155
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
163157
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.
164159
Use the following command and filter on a time frame that includes the relevant query:
165160
166161
```kusto
@@ -169,66 +164,57 @@ Use the following command and filter on a time frame that includes the relevant
169164
| extend ExternalDataStats = OverallQueryStats.input_dataset_statistics.external_data
170165
```
171166

172-
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.
174168

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:
185-
186-
```kusto
187-
.show external table [ETName] policy query_acceleration
188-
| project Policy = todynamic(Policy)
189-
| project Policy.Hot, Policy.HotWindows
190-
```
191-
192-
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:
198170

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:
200173

201-
Use the following command to check the acceleration progress:
202-
203-
```kusto
204-
.show external table [ETName] details
205-
| project state = todynamic(QueryAccelerationState)
206-
| project state.CompletionPercentage, state.PendingDataFilesCount
207-
```
208-
209-
- 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).
174+
```kusto
175+
.show external table [ETName] policy query_acceleration
176+
| project Policy = todynamic(Policy)
177+
| project Policy.Hot, Policy.HotWindows
178+
```
179+
180+
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)
192+
| project state.CompletionPercentage, state.PendingDataFilesCount
193+
```
194+
195+
- 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).
211197
212-
### Understanding and mitigating data acceleration issues
198+
#### Step 4: Understanding and mitigating data acceleration issues
213199
214200
Unaccelerated data (`CompletionPercentage < 100`) can stem from several issues.
215201
216202
#### Data is currently being accelerated
217203
218204
Data acceleration might take time, especially when:
219205
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.
223209
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.
225211
226212
#### Data files aren't eligible for acceleration
227213
228-
Parquet data files larger than **1 GB** won't be cached.
214+
Parquet data files larger than **1 GB** aren't cached.
229215
230216
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.
232218
233219
#### Insufficient cluster capacity or resources
234220
@@ -245,5 +231,7 @@ Run the following command to view the remaining capacity:
245231
- If `Remaining == 0` consistently and `CompletionPercentage` isn't increasing, consider:
246232

247233
- 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.
249237

data-explorer/kusto/management/toc.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ items:
587587
href: query-acceleration-policy.md
588588
displayName: external table, delta table
589589
- name: Query acceleration troubleshooting guide
590-
href: query-acceleration-tsg.md
590+
href: query-acceleration-troubleshooting-guide.md
591591
displayName: external table, delta table
592592
- name: .alter query acceleration policy command
593593
href: alter-query-acceleration-policy-command.md

0 commit comments

Comments
 (0)