回答:
可用性グループのセカンダリデータベースで大きなクエリを実行すると、プライマリデータベースのトランザクションパフォーマンスに影響しますか?
可用性グループを構成するときに使用した同期モード(同期または非同期)に依存します。
上のセカンダリレプリカ、すべてのトランザクションがONLYスナップショット分離レベルを使用し、すべてのロックヒントも同様に無視されます。そのため、AlwaysONを採用するときにはワークロードをテストすることが重要です。
From:セカンダリレプリカでレポートワークロードを実行する際のREDOスレッドのブロッキングの最小化
レポートワークロードをスナップショット分離にマッピングすると、セカンダリレプリカのREDOスレッドによって適用されるDMLワークロードと読み取りまたはレポートワークロードの間のブロックが排除されますが、DDL操作の実行中のREDOスレッドの潜在的なブロックは排除されません。
使用する場合
同期モード
セカンダリレプリカのブロックの問題は、プライマリレプリカでのクエリのパフォーマンスに影響します。そのため、セカンダリで実行された読み取りワークロード(選択)によって、REDOスレッドがプライマリレプリカからの変更を適用できなくなる可能性があります。つまり、プライマリレプリカは、ローカルでコミットする前にすべてのセカンダリSYNCレプリカに変更が適用されるのを待たなければならず、タイムアウトまたはブロッキングまたはデッドロックで終わる可能性があります。
REDOスレッドは、Readable SecondaryのDB STARTUP
コマンドとして見ることができますsys.dm_exec_requests
。そのスレッドがブロックされている場合、セカンダリの読み取りワークロードがプライマリに影響を与える可能性があります。
詳細については、チェック- シナリオ1:セカンダリレプリカでの大規模なクエリのためにブロックされたREDO
非同期モード
「リアルタイムまたはほぼリアルタイム」の定義では、使用する同期方法、ネットワーク遅延、プライマリレプリカのビジー状態、およびセカンダリに転送する必要のあるログアクティビティに留意する必要があります。
SQL Server 2016では、AlwaysONレルムでいくつかの主要な機能強化が行われています。