RDS for Microsoft SQL Server でのトレースフラグの設定
SQL Server トレースフラグは、データベースエンジンの動作を変更するためにオンまたはオフにできる設定です。トレースフラグを使用すると、非表示の機能を有効にしたり、パフォーマンスの問題を修正したり、デフォルトのサーバー動作を上書きしたりできます。実質的に、各トレースフラグは SQL Server のデフォルトの動作を変更するオン/オフスイッチとして機能します。
Microsoft SQL Server で使用可能なトレースフラグの完全なリストについては、Microsoft のドキュメントにある「DBCC TRACEON - Trace Flags
RDS for SQL Server はマネージドサービスであるため、グローバルなサーバーレベルの設定が制限されています。RDS for SQL Server DB パラメータグループを通じてスタートアップパラメータとして設定できるのは、特定のトレースフラグのみです。次の表に、RDS for SQL Server でサポートされているトレースフラグを示します。
重要
本番環境でトレースフラグを有効にする前に、徹底的なテストと検証を行うことを強くお勧めします。トレースフラグはパフォーマンスのチューニングとトラブルシューティングに役立ちますが、正しく使用しないと、システムの不安定化、最適ではないクエリプランの生成、またはリソース関連の問題を引き起こす可能性があります。
| トレースフラグ | 説明 |
|---|---|
647 |
SQL Server 2012 で導入されたデータ検証チェックをスキップします。このチェックにより、 |
652 |
スキャン時のページプリフェッチを無効にします。これを有効にすると、SQL Server はバッファプールへのページの事前読み込みを停止します。これにより、プリフェッチに依存するクエリのパフォーマンスが低下する可能性があります。 |
692 |
ヒープまたはクラスター化インデックスへのデータの一括ロード時に、高速挿入を無効にします (SQL Server 2016 以降でサポート)。 |
1204 |
デッドロックに関与しているリソースとロックの種類、および影響を受けている現在のコマンドを返します。 |
1211 |
メモリプレッシャーやロック数に基づくロックのエスカレーションを無効にします。SQL Server は、行ロックやページロックをテーブルロックにエスカレートしなくなります。 |
1222 |
デッドロック情報を XML 形式で返します (1204 の拡張バージョン)。 |
1224 |
ロックの数に基づくロックエスカレーションを無効にします (メモリプレッシャーによるロックエスカレーションは引き続き有効です)。 |
1448 |
レプリケーションログリーダーが、非同期セカンダリによる変更の確認を待たずに処理を進めることを許可します。ログリーダーは、同期セカンダリが |
2528 |
|
3654 |
メモリリークまたは解放されていないメモリ状態のトラブルシューティングに使用します。有効にすると、このような問題が検出された場合、SQL Server はアサーションの失敗をトリガーし、ミニダンプを生成します。このダンプは、トレースフラグ自体によるものではなく、拡張トレースによって基となるメモリエラーが検出された結果です。 |
4138 |
|
4139 |
先頭の列が昇順、降順、または固定のいずれであるかに関係なく、クエリコンパイル時のヒストグラムを調整してカーディナリティ推定の精度を向上させます。 |
4199 |
複数のトレースフラグで以前に行われた複数のクエリオプティマイザの変更を制御します。 |
4616 |
サーバーレベルのメタデータをアプリケーションロールから見えるようにします。アプリケーションロールから見えるようにします。 |
6527 |
共通言語ランタイム (CLR) 統合でメモリ不足エラーが最初に発生した際にメモリダンプが生成されないようにします。 |
7745 |
データベースのシャットダウン中にクエリストアがデータをディスクにフラッシュしないようにします。 |
8285 |
変更データキャプチャ (CDC) またはリードコミットスナップショット分離 (RCSI) が有効になっているデータベースで発生するアサーションエラー ( |
8780 |
オプティマイザがより良いプランを見つけるための時間を増やします。 |
9432 |
SQL Server 2019 CU14 で修正された、 |
9481 |
データベースの互換性レベルに関係なく、クエリオプティマイザにレガシーカーディナリティ推定モデル (SQL Server 2012 以前) を使用するように強制します。代替方法: データベースレベルでは |
9492 |
インスタンスレベルで |
9592 |
同期可用性グループのログストリーム圧縮を有効にします。圧縮によってレイテンシーが増加するため、ログストリームの圧縮は同期可用性グループではデフォルトで無効になっています。この機能を有効にすると、レプリカ間のネットワーク帯域幅の使用量を削減できますが、CPU 使用率の増加と若干のレイテンシーの上昇という代償を伴います。適用対象: SQL Server 2016 (13.0) 以降。 |
11024 |
SQL Server 2017 では、パーティションテーブルの増分統計情報の自動更新が遅延する場合があります。これは、合計カウント数がルートノードのしきい値を超えている場合でも、単一のパーティションの変更数がローカルしきい値を超えない場合に、ルートノードの変更カウントがゼロにリセットされるためです。トレースフラグ 11024 は、ルートノードの変更数をすべてのパーティション変更の合計として維持することでこの問題を修正し、統計情報のタイムリーな更新を保証します。適用対象: SQL Server 2017 CU3 以降。 |
11042 |
SQL Server 2019 CU14 は、 |
12502 |
オンプレミス SQL Server インスタンスの外部認可ポリシーを無効にすることで、 |
12618 |
自動プラン修正 (APC) 機能が同じプランに対して連続して複数のリグレッションチェックを実行できるようにし、修正を決定する前により多くの統計情報を収集できるようにします。適用対象: SQL Server 2022 CU4 以降。 |
12656 |
自動プラン修正 (APC) がプランの変更を検出した後、リグレッションチェックを実行するまでに 5 分の遅延を追加します。これにより、高速実行クエリによる結果の偏りを回避し、変更の影響を受ける実行時間の長いクエリやタイムアウトが発生しやすいクエリにも対応できます。適用対象: SQL Server 2022 CU4 以降。 |
注記
SQL Server 2016 Service Pack 1 (SP1) 以降では、トレースフラグ 4138 および 4139 の代わりに、クエリレベルで USE HINT クエリヒントを使用することをお勧めします。この変更を本番環境に適用する前に、必ず徹底的にテストしてください。
重要
トレースフラグ 7745 を使用すると、シャットダウン中にフラッシュされていないクエリストアデータが失われる可能性があります。SQL Server をすぐにシャットダウンするには、このトレースフラグの代わりに SHUTDOWN WITH NOWAIT を使用してください。