Share via


解釈された Transact-SQL を使用したメモリ最適化テーブルへのアクセス

適用対象:SQL ServerAzure SQL Database Not supported.Azure Synapse Analytics Not supported. Analytics Platform System (PDW)

いくつかの例外を除き、Transact-SQL クエリまたは DML 操作 (選択、挿入、更新、または削除)、アドホック バッチ、および SQL モジュール (ストアド プロシージャ、テーブル値関数、トリガー、ビューなど) を使用して、メモリ最適化テーブルにアクセスできます。

インタープリターによって処理される Transact-SQL とは、ネイティブ コンパイル ストアド プロシージャとは異なる、Transact-SQL バッチまたはストアド プロシージャを意味します。 インタープリターによって処理される Transact-SQL による、メモリ最適化されたテーブルへのアクセスは、相互運用アクセスと呼ばれます。

SQL Server 2016 (13.x) 以降では、解釈された Transact-SQL のクエリは、直列モードだけではなく、並列でもメモリ最適化テーブルをスキャンできます。

メモリ最適化テーブルには、ネイティブ コンパイル ストアド プロシージャを使用してアクセスすることもできます。 ネイティブ コンパイル ストアド プロシージャは、パフォーマンスが重要な OLTP 操作に推奨されます。

解釈された Transact-SQL によるアクセスは、次のシナリオにお勧めします。

  • アドホック クエリおよび管理タスク。

  • レポート クエリ。このクエリでは通常、ネイティブ コンパイル ストアド プロシージャでは使用できない構造 ( ウィンドウ 関数など) を使用します (ウィンドウ関数は OVER 関数とも呼ばれます)。

  • アプリケーション コードの変更を最小限に抑えて (またはコードを変更することなく)、アプリケーションのパフォーマンスが重要な部分をメモリ最適化テーブルに移行するには、次の手順を実行します。 テーブルを移行すると、パフォーマンス向上を確認できることがあります。 ストアド プロシージャをネイティブ コンパイル ストアド プロシージャに移行すると、いっそうのパフォーマンス向上が確認されることがあります。

  • ネイティブ コンパイル ストアド プロシージャでは、Transact-SQL を使用できません。

ただし、次の Transact-SQL 構造は、メモリ最適化されたテーブル内のデータにアクセスする、インタープリターによって処理される Transact-SQL ストアド プロシージャでサポートされていません。

面グラフ サポートされていない
テーブルへのアクセス TRUNCATE TABLE

MERGE (ターゲットとしてのメモリ最適化テーブル)

動的カーソルおよびキーセット カーソル (これらは自動的に静的カーソルに降格されます)。

コンテキスト接続を使用した CLR モジュールからのアクセス。

インデックス付きビューから、メモリ最適化されたテーブルへの参照。
複数のデータベース間 複数データベース間のクエリ

データベースにまたがるトランザクション

リンク サーバー

テーブル ヒント

テーブル ヒントの詳細については、 テーブル ヒント (Transact-SQL) インメモリ OLTP をサポートするために SNAPSHOT が追加されました。

次のテーブル ヒントは、解釈された Transact-SQL を使用してメモリ最適化テーブルにアクセスする場合はサポートされません。

HOLDLOCK

PAGLOCK

READUNCOMMITTED

TABLOCKXX

IGNORE_CONSTRAINTS

READCOMMITTED

ROWLOCK

UPDLOCK

IGNORE_TRIGGERS

READCOMMITTEDLOCK

SPATIAL_WINDOW_MAX_CELLS = integer

XLOCK

NOWAIT

READPAST

TABLOCK

解釈された Transact-SQL を使用して明示的または暗黙のトランザクションからメモリ最適化テーブルにアクセスする場合には、次の操作のうち少なくとも 1 つを実行する必要があります。

自動コミット モードで実行されるクエリでアクセスするメモリ最適化テーブルの場合、分離レベルのテーブル ヒントは必要ありません。

参照

Transact-SQL によるインメモリ OLTP のサポート

インメモリ OLTP への移行