可用性グループのセカンダリデータベースで大きなクエリを実行すると、プライマリデータベースのトランザクションパフォーマンスに影響しますか?


17

SSRSおよびTableauのレポート用に、リアルタイムまたはほぼリアルタイムのデータを提供する必要があります。実稼働OLTPシステムが長時間実行されるクエリによって悪影響を受けるのは望ましくありません。可用性グループのセカンダリデータベースで大きなクエリを実行すると、プライマリデータベースのトランザクションパフォーマンスに影響しますか?

回答:


14

可用性グループのセカンダリデータベースで大きなクエリを実行すると、プライマリデータベースのトランザクションパフォーマンスに影響しますか?

可用性グループを構成するときに使用した同期モード(同期または非同期)に依存します。

上のセカンダリレプリカすべてのトランザクションがONLYスナップショット分離レベルを使用し、すべてのロックヒントも同様に無視されます。そのため、AlwaysONを採用するときにはワークロードをテストすることが重要です。

From:セカンダリレプリカでレポートワークロードを実行する際のREDOスレッドのブロッキングの最小化

レポートワークロードをスナップショット分離にマッピングすると、セカンダリレプリカのREDOスレッドによって適用されるDMLワークロードと読み取りまたはレポートワークロードの間のブロックが排除されますが、DDL操作の実行中のREDOスレッドの潜在的なブロックは排除されません

使用する場合

  • 同期モード

    • セカンダリレプリカのブロックの問題は、プライマリレプリカでのクエリのパフォーマンスに影響します。そのため、セカンダリで実行された読み取りワークロード(選択)によって、REDOスレッドがプライマリレプリカからの変更を適用できなくなる可能性があります。つまり、プライマリレプリカは、ローカルでコミットする前にすべてのセカンダリSYNCレプリカに変更が適用されるのを待たなければならず、タイムアウトまたはブロッキングまたはデッドロックで終わる可能性があります。

      REDOスレッドは、Readable SecondaryのDB STARTUPコマンドとして見ることができますsys.dm_exec_requests。そのスレッドがブロックされている場合、セカンダリの読み取りワークロードがプライマリに影響を与える可能性があります。

      詳細については、チェック- シナリオ1:セカンダリレプリカでの大規模なクエリのためにブロックされたREDO

  • 非同期モード

    • プライマリは、セカンダリからの確認応答を待ちません。セカンダリのブロックの問題はセカンダリに分離され、ロックがクリアされ、REDOスレッドがログブロックを適用できるようになるまで、REDOキューがセカンダリで増大します。これはプライマリレプリカには影響しません。

「リアルタイムまたはほぼリアルタイム」の定義では、使用する同期方法、ネットワーク遅延、プライマリレプリカのビジー状態、およびセカンダリに転送する必要のあるログアクティビティに留意する必要があります。

SQL Server 2016では、AlwaysONレルムでいくつかの主要な機能強化が行われています。


2
ブロックされたREDOスレッドは、「プライマリレプリカでのクエリのパフォーマンス」には影響しません。セカンダリでのIO競合により、セカンダリでのログレコードの保存が遅れ、プライマリでのコミット時間に影響する可能性があります。ただし、これはREDOスレッドとは関係ありません。プライマリは、REDOが変更を適用するのを待ちません。ログファイルに書き込むためだけです。参照してくださいblogs.msdn.microsoft.com/sqlserverstorageengine/2011/12/22/...
マイクロソフト-デイビット・ブラウン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.