次の方法で共有


バッチ モード処理と大きなページ メモリ モデルの間の相互運用性の問題

この記事は、SQL Server の大きなページ メモリ モデルを使用した列ストアと行ストアでのバッチ モード処理の使用によって発生するパフォーマンスと安定性の問題を解決するのに役立ちます。

元の製品バージョン: SQL Server 2012、SQL Server 2014、SQL Server 2016、SQL Server 2017、SQL Server 2019、SQL Server 2022
元の KB 番号: 3210239

現象

このシナリオでは、次の 1 つ以上の問題が発生します。

  • SQL Server エラー ログの非生成スケジューラ エラーと関連するメモリ ダンプ。

  • バッチ モード処理を使用するクエリでは、重大なパフォーマンスの問題が発生する可能性があります。

  • SQL Server エラー ログのアクセス違反例外と関連するメモリ ダンプ。

  • sp_createstatsを実行すると、次のエラー メッセージが表示されることがあります。

    There is insufficient system memory in resource pool 'default' to run this query
    

回避策

これらの問題を軽減するには、次の 2 つの方法のいずれかまたは両方を試してください。

  • SQL Server インスタンスの SQL Server スタートアップ パラメーターから trace フラグ 834 (-T834) を削除して、大きなページ メモリ モデルを無効にします。 この手順を完了すると、SQL Server は large page メモリ モデルの使用を停止し、 conventional または lock pages メモリ モデルに戻ります。

  • SQL Server で列ストア インデックスを使用せず、説明されている現象が発生した場合は、 ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_ON_ROWSTORE = OFFを使用して、データベース レベルで行ストアのバッチ モードを無効にすることができます。 詳細については、「ALTER DATABASE SCOPED CONFIGURATION」を参照してください。

詳細