レポートの目的で非同期読み取り専用セカンダリレプリカを使用するAlwaysOn環境があります。
レポートの1つは、通常よりもはるかに長い間断続的に実行されます。実行速度が遅い場合、プランは別のルートを取り、大きなテーブルでクラスター化されたインデックススキャンを引き起こしていることがわかります。
ただし、プライマリレプリカで同じクエリを実行すると、正常に実行され、期待どおりのプランが生成されます。
プライマリレプリカでは良い計画が生成されるのに、セカンダリレプリカでは悪い計画が生成されるのはなぜですか?考えられる理由は何ですか?
サーバーのハードウェアはまったく同じで、構成も同じです。
SQL Server 2012、2014、または2016を使用している場合は、SQL Serverのバグのようです。これを修正したCUを使用して、最新のSPをインストールしてください。
詳細はこちら:
修正:SQL Server 2012または2014のプライマリレプリカでFULLSCANオプションを使用して統計を更新した後、セカンダリレプリカで作成された不正なクエリプラン