メモリ最適化アドバイザー

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

トランザクション パフォーマンス分析レポート (「 テーブルまたはストアド プロシージャをインメモリ OLTP に移植する必要があるかどうかの確認」を参照) では、インメモリ OLTP を使用するように移植した場合に効果が得られる、データベース内のテーブルが通知されます。 インメモリ OLTP を使用するように移植するテーブルを特定すると、SQL Server Management Studio でメモリ最適化アドバイザーを使用して、ディスク ベースのテーブルをメモリ最適化テーブルに移行できます。

メモリ最適化アドバイザーでは次のことができます。

  • ディスクベース テーブルで使用されている機能のうち、メモリ最適化テーブルでサポートされていない機能を識別する。

  • テーブルとデータをメモリ最適化 (サポートされていない機能がない場合) に移行する。

移行方法については、「In-Memory OLTP - Common Workload Patterns and Migration Considerations」(インメモリ OLTP - 一般的なワークロード パターンと移行に関する考慮事項) を参照してください。

メモリ最適化アドバイザーの使用に関するチュートリアル

オブジェクト エクスプローラーで、変換するテーブルを右クリックし、 [メモリ最適化アドバイザー]を選択します。 これにより、 テーブルのメモリ最適化アドバイザーのようこそページが表示されます。

メモリ最適化のチェック リスト

テーブルのメモリ最適化アドバイザー のようこそページで [次へ]をクリックすると、メモリ最適化のチェック リストが表示されます。 メモリ最適化テーブルでは、ディスク ベース テーブルのすべての機能がサポートされているわけではありません。 メモリ最適化のチェック リストでは、メモリ最適化テーブルと互換性のない機能がディスク ベース テーブルで使用されているかどうかが報告されます。 テーブルのメモリ最適化アドバイザー では、インメモリ OLTP の使用へ移行できるようにディスク ベース テーブルが変更されるわけではありません。 移行を続行する前に、それらの変更を行う必要があります。 テーブルのメモリ最適化アドバイザー では、非互換性が検出されるたびに、ディスク ベース テーブルの変更に役立つ情報へのリンクが表示されます。

移行を計画するために、このような非互換性の一覧を保持する場合は、 [レポートの生成] をクリックして HTML の一覧を生成します。

テーブルで非互換性が検出されず、インメモリ OLTP を使用して SQL Server 2014 (12.x) インスタンスに接続している場合は、[次へ] をクリックします。

[メモリ最適化の警告]

次の [メモリ最適化の警告] ページには、問題の一覧があります。この一覧にある問題によって、インメモリ OLTP を使用するためのテーブルの移行が妨げられることはありませんが、他のオブジェクト (ストアド プロシージャや CLR 関数など) の動作が失敗したり予期しない動作が発生する可能性があります。

一覧に表示される最初のいくつかの警告は、情報提供を目的としているため、テーブルに当てはまる場合と当てはまらない場合があります。 テーブルの右側の列にあるリンクをクリックすると、詳細情報が表示されます。

警告テーブルには、テーブルには存在しない可能性のある警告も表示されます。

対処可能な警告には、左側の列に黄色い三角形が表示されます。 対処可能な警告がある場合、移行を終了し、警告を解決してから、処理を再開してください。 警告を解決しないと、移行されるテーブルが原因でエラーが発生する可能性があります。

このような警告の HTML レポートを生成するには、 [レポートの生成] をクリックしてください。 [次へ] をクリックして続行します。

[最適化オプションの確認]

次の画面では、インメモリ OLTP への移行に関するオプションを変更できます。

[メモリ最適化ファイル グループ]
メモリ最適化ファイル グループの名前です。 メモリ最適化テーブルを作成する前に、データベースには、1 つ以上のファイルを含むメモリ最適化ファイル グループを用意しておく必要があります。

メモリ最適化ファイル グループがない場合は、既定の名前を変更できます。 メモリ最適化ファイル グループを削除することはできません。 メモリ最適化ファイル グループが存在する場合、自動終了やデータベース ミラーリングなどのデータベース レベルの機能の一部が無効になることがあります。

データベースにメモリ最適化ファイル グループが既に存在する場合、このフィールドにはその名前があらかじめ設定されており、このフィールドの値を変更することはできません。

[論理ファイル名とファイル パス]
メモリ最適化テーブルが格納されるファイルの名前です。 メモリ最適化テーブルを作成する前に、データベースには、1 つ以上のファイルを含むメモリ最適化ファイル グループを用意しておく必要があります。

既存のメモリ最適化ファイル グループがない場合は、ファイルの既定の名前とパスを変更すると、移行プロセスの終了時に作成できます。

既存のメモリ最適化ファイル グループがある場合は、これらのフィールドにはあらかじめ値が設定されており、それらの値を変更することはできません。

[元のテーブル名を変更]
移行プロセスの終了時には、テーブルの現在の名前を使用して新しいメモリ最適化テーブルが作成されます。 名前の競合を回避するには、現在のテーブルの名前を変更する必要があります。 その名前は、このフィールドで変更できます。

[現在の推定メモリ コスト (MB)]
メモリ最適化アドバイザーでは、ディスク ベース テーブルのメタデータに基づいて、新しいメモリ最適化テーブルで消費されるメモリの量が推定されます。 テーブル サイズの計算については、「 メモリ最適化テーブルのテーブルと行のサイズ」で説明しています。

割り当てられているメモリが十分でない場合は、移行プロセスが失敗することがあります。

[新しいメモリ最適化テーブルにテーブル データもコピーする]
新しいメモリ最適化テーブルに現在のテーブルのデータも移動する場合は、このオプションを選択します。 このオプションを選択しないと、新しいメモリ最適化テーブルは作成されますが、行が存在しません。

[既定でテーブルを持続性のあるテーブルとして移行する]
インメモリ OLTP では、持続性のあるメモリ最適化テーブルと比較するとパフォーマンスが優れている持続性のないテーブルがサポートされています。 ただし、持続性のないテーブルのデータはサーバーの再起動時に失われます。

このオプションを選択した場合、メモリ最適化アドバイザーによって、持続性のあるテーブルではなく持続性のないテーブルが作成されます。

警告

このオプションを選択するのは、持続性のないテーブルと関連したデータ損失のリスクを理解している場合だけにしてください。

[次へ] をクリックして、続行します。

[主キーの変換の確認]

次の画面は [主キーの変換の確認]です。 メモリ最適化アドバイザーでは、テーブルに 1 つ以上の主キーが存在するかどうかが検出され、主キーのメタデータに基づいて列の一覧が作成されます。 列の一覧が作成されなければ、持続性のあるメモリ最適化テーブルに移行する場合に、主キーを作成する必要があります。

主キーが存在せず、テーブルを持続性のないテーブルに移行している場合、この画面は表示されません。

テキスト列 ( charncharvarchar、および nvarchar型の列) の場合は、適切な照合順序を選択する必要があります。 インメモリ OLTP でサポートされているのは、メモリ最適化テーブルの列の BIN2 照合順序のみで、補助文字を使用した照合順序はサポートされていません。 サポートされている照合順序と、照合順序を変更した場合に考えられる影響については、「 Collations and Code Pages 」を参照してください。

主キーの構成可能なパラメーターは次のとおりです。

[この主キーの新しい名前を選択する]
このテーブルの主キーの名前は、データベース内で一意である必要があります。 主キーの名前は、ここで変更できます。

[この主キーの種類を選択する]
インメモリ OLTP では、メモリ最適化テーブルで次の 2 種類のインデックスをサポートしています。

  • NONCLUSTERED HASH インデックス。 このインデックスは、多数のポイント参照を含むインデックスに最適です。 [バケット数] フィールドで、このインデックスのバケット数を構成できます。

  • NONCLUSTERED インデックス。 この種類のインデックスは、多数の範囲クエリを含むインデックスに最適です。 [並べ替え列と並べ替え順序] の一覧で、各列の並べ替え順序を構成できます。

主キーに最適なインデックスの種類を理解するには、「 ハッシュ インデックス」を参照してください。

主キーを選択したら、 [次へ] をクリックします。

[インデックスの変換の確認]

次は [インデックスの変換の確認]ページです。 メモリ最適化アドバイザーでは、テーブルに 1 つ以上のインデックスが存在するかどうかが検出され、列とデータ型の一覧が作成されます。 [インデックスの変換の確認] ページで構成できるパラメーターは、前の [主キーの変換の確認] ページと同じです。

主キーのみがあるテーブルを持続性のあるテーブルに移行している場合、この画面は表示されません。

テーブル内の各インデックスについて変換するかどうかを決定したら、 [次へ]をクリックします。

[移行アクションの確認]

次は [移行アクションの確認]ページです。 移行操作のスクリプトを作成するには、[スクリプト] をクリックして Transact-SQL スクリプトを生成します。 その後、スクリプトを変更および実行できます。 テーブルの移行を開始するには、 [移行] をクリックします。

移行プロセスが完了したら、 オブジェクト エクスプローラー を更新して、新しいメモリ最適化テーブルと古いディスク ベース テーブルを確認します。 古いテーブルは保持しておくことも、都合のよいときに削除することも可能です。

参照

インメモリ OLTP への移行