SQL Server 2014
インメモリ OLTP (インメモリ最適化)という優れた機能と思われる機能を紹介しました。数年前に試して、より優れたパフォーマンスを得たMySQL's
MEMORY Storage Engineを思い出します。
すでに質問されていることは知っていますが、より的を絞ったシナリオに興味があります。
いくつかのSSRS
レポートでは、パフォーマンス上の理由 (多くの結合、グループ化などを含むクエリの非常に見苦しく遅い実行プラン) のために、一時テーブルを使用して部分的な結果を保持することでロジックを分割する大規模なストアド プロシージャを使用しています。
一時テーブルはディスクに書き込まれるため、大量のデータ (数万行または数十万行) を処理する場合にパフォーマンスに影響を与えることが予想されます。
このシナリオで使用In-Memory OLTP tables
する意味はありますか? 以下のメリット・デメリットを考えています。
長所:
- すべてのデータがメモリに保存されるため、大幅に高速になるはずです
短所:
- 明示的なセッションの分離が必要です (テーブルには、さまざまな からのデータが混在しないように、ある種のセッション識別子を含める必要があります
SPID
) - メモリ不足を回避するために明示的なデータのクリーンアップが必要です (宣言スコープを終了した後に一時テーブルが自動的に削除されるのとは対照的に)
- テーブルに格納されるデータ量に注意する必要があります