Skip to content

Commit e446488

Browse files
committed
edit pass: intelligent-query-processing
1 parent 008f592 commit e446488

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

docs/relational-databases/performance/intelligent-query-processing.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,13 @@ For some hybrid transactional-analytical workloads, the overhead on a workload's
111111
### Workloads that might benefit from batch mode on rowstore
112112

113113
The following workloads might benefit from batch mode on rowstore:
114-
1. A significant part of the workload consists of analytical queries. Usually, these queries have operators like joins or aggregates that process hundreds of thousands of rows or more, **and**
115-
2. The workload is CPU bound. If the bottleneck is I/O, we still recommend that you consider a columnstore index, if possible, **and**
116-
3. Creating a columnstore index adds too much overhead to the transactional part of your workload, **or**
117-
4. Creating a columnstore index isn't feasible because your application depends on a feature that's not yet supported with columnstore indexes.
114+
* A significant part of the workload consists of analytical queries. Usually, these queries have operators like joins or aggregates that process hundreds of thousands of rows or more, **and**
115+
* The workload is CPU bound. If the bottleneck is I/O, we still recommend that you consider a columnstore index, if possible, **and**
116+
* Creating a columnstore index adds too much overhead to the transactional part of your workload, **or**
117+
* Creating a columnstore index isn't feasible because your application depends on a feature that's not yet supported with columnstore indexes.
118118

119119
> [!NOTE]
120-
> Batch mode on rowstore helps only by reducing CPU consumption. If your bottleneck is I/O-related, and data isn't already cached, **cold cache**, batch mode on rowstore won't improve elapsed time. Similarly, if there isn't enough memory on the machine to cache all the data, a performance improvement is unlikely.
120+
> Batch mode on rowstore helps only by reducing CPU consumption. If your bottleneck is I/O related, and data isn't already cached, **cold cache**, batch mode on rowstore won't improve elapsed time. Similarly, if there isn't enough memory on the machine to cache all the data, a performance improvement is unlikely.
121121
122122
### What changes with batch mode on rowstore?
123123

@@ -127,17 +127,17 @@ Even if a query doesn't involve any table with a columnstore index, the query pr
127127
1. An initial check of table sizes, operators used, and estimated cardinalities in the input query.
128128
2. Additional checkpoints, as the optimizer discovers new, cheaper plans for the query. If these alternative plans don't make significant use of batch mode, the optimizer stops exploring batch mode alternatives.
129129

130-
If batch mode on rowstore is used, in the query run plan, you see the actual run mode as **batch mode**. It's used by the scan operator for on-disk heaps and B-tree indexes. This batch mode scan can evaluate batch mode bitmap filters. You might also see other batch mode operators in the plan. Examples are hash joins, hash-based aggregates, sorts, window aggregates, filters, concatenation, and compute scalar operators.
130+
If batch mode on rowstore is used, you see the actual run mode as **batch mode** in the query run plan. The scan operator uses batch mode for on-disk heaps and B-tree indexes. This batch mode scan can evaluate batch mode bitmap filters. You might also see other batch mode operators in the plan. Examples are hash joins, hash-based aggregates, sorts, window aggregates, filters, concatenation, and compute scalar operators.
131131

132132
### Remarks
133133

134-
1. Query plans don't always use batch mode. The query optimizer might decide that batch mode isn't beneficial for the query.
135-
2. The query optimizer's search space is changing. So if you get a row mode plan, it might not be the same as the plan you get in a lower compatibility level. And if you get a batch mode plan, it might not be the same as the plan you get with a columnstore index.
136-
3. Plans might also change for queries that mix columnstore and rowstore indexes because of the new batch mode rowstore scan.
137-
4. There are current limitations for the new batch mode on rowstore scan:
134+
* Query plans don't always use batch mode. The query optimizer might decide that batch mode isn't beneficial for the query.
135+
* The query optimizer's search space is changing. So if you get a row mode plan, it might not be the same as the plan you get in a lower compatibility level. And if you get a batch mode plan, it might not be the same as the plan you get with a columnstore index.
136+
* Plans might also change for queries that mix columnstore and rowstore indexes because of the new batch mode rowstore scan.
137+
* There are current limitations for the new batch mode on rowstore scan:
138138
* It won't kick in for in-memory OLTP tables or for any index other than on-disk heaps and B-trees.
139139
* It also won't kick in if a large object (LOB) column is fetched or filtered. This limitation includes sparse column sets and XML columns.
140-
5. There are queries that batch mode isn't used for even with columnstore indexes. Examples are queries that involve cursors. These same exclusions also extend to batch mode on rowstore.
140+
* There are queries that batch mode isn't used for even with columnstore indexes. Examples are queries that involve cursors. These same exclusions also extend to batch mode on rowstore.
141141

142142
### Configure batch mode on rowstore
143143

0 commit comments

Comments
 (0)