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
@@ -145,21 +145,25 @@ The four key components of ADR are:
145
145
146
146
## Workloads that benefit from ADR
147
147
148
-
ADR benefits most workloads, and is particularly beneficial for workloads that have:
148
+
ADR benefits most workloads by improving database availability, and is particularly beneficial for workloads that have:
149
149
150
150
- Long-running transactions.
151
151
- Active transactions that cause the transaction log to grow significantly.
152
152
- Long periods of database unavailability due to long running recovery (such as from unexpected service restart or manual transaction rollback).
153
153
154
+
The benefits of ADR require version storage and extra processing, which might introduce a performance overhead for certain workloads. For example, with write-intensive workloads generating many row versions, data pages might be split more often to accommodate the [in-row](sql-server-transaction-locking-and-row-versioning-guide.md#space-used-by-the-persistent-version-store-pvs) versions. Because all row versions are logged, the amount of generated transaction log can increase as well.
155
+
156
+
For most workloads, the performance overhead of ADR ranges from not detectable to minor. In an optimal database management strategy, you balance the certain benefits of ADR against the potential performance overhead.
157
+
154
158
ADR isn't supported in databases using [database mirroring](../database-engine/database-mirroring/database-mirroring-sql-server.md), an older and deprecated high availability feature.
155
159
156
160
## Best practices for ADR
157
161
158
162
- Avoid unnecessary long-running transactions. Though ADR speeds up database recovery even with long-running transactions, such transactions can delay version cleanup and increase PVS size.
159
163
160
164
- Avoid large transactions that include DDL operations. ADR uses the secondary log stream (SLOG) mechanism to track DDL operations used in recovery. SLOG is only used while the transaction is active. SLOG is checkpointed, so avoiding large transactions that use SLOG can help the overall performance. These scenarios can cause the SLOG to take up more space:
161
-
- Many DDLs are executed in one transaction. For example, in one transaction, rapidly creating and dropping temp tables.
162
-
- A table has very large number of partitions/indexes that are modified. For example, a `DROP TABLE` operation on such table would require a large reservation of SLOG memory, which would delay truncation of the transaction log and delay undo/redo operations. As a workaround, drop the indexes individually and gradually, then drop the table.
165
+
- Many DDLs are executed in one transaction. For example, in one transaction, rapidly creating and dropping temp tables.
166
+
- A table has very large number of partitions/indexes that are modified. For example, a `DROP TABLE` operation on such table would require a large reservation of SLOG memory, which would delay truncation of the transaction log and delay undo/redo operations. As a workaround, drop the indexes individually and gradually, then drop the table.
163
167
164
168
For more information about SLOG, see [ADR recovery components](#adr-recovery-components).
0 commit comments