メモリ最適化ファイルグループ

適用対象:SQL Server

メモリ最適化テーブルを作成するには、まずメモリ最適化ファイルグループを作成する必要があります。 メモリ最適化ファイル グループには 1 つ以上のコンテナーが含まれています。 各コンテナーには、データ ファイルかデルタ ファイル、あるいはその両方が含まれています。

SCHEMA_ONLY テーブルからのデータ行は持続的ではなく、メモリ最適化テーブルに対応するメタデータおよびネイティブ コンパイル ストアド プロシージャは従来型のカタログに格納されますが、メモリ最適化テーブルを含むデータベースを一貫した環境で提供できるように、インメモリ OLTP エンジンでは引き続き、SCHEMA_ONLY メモリ最適化テーブルに対応するメモリ最適化ファイルグループが必要です。

メモリ最適化ファイルグループは FILESTREAM ファイルグループをベースとしていますが、次の違いがあります。

  • メモリ最適化ファイルグループは、データベースごとに 1 つだけ作成できます。 memory_optimized_data を含めることにより、このファイルグループに明示的にマークを付ける必要があります。 データベースを作成するときにファイルグループを作成することも、後でファイルグループを追加することもできます。

    ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATA  
    
  • MEMORY_OPTIMIZED_DATA ファイル グループに 1 つ以上のコンテナーを追加する必要があります。 次に例を示します。

    ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\data\imoltp_mod1') TO FILEGROUP imoltp_mod  
    
  • メモリ最適化ファイルグループを作成するために、ファイルストリームを有効にする必要はありません (FILESTREAM の有効化と構成)。 filestream へのマッピングは、インメモリ OLTP エンジンによって実行されます。

  • メモリ最適化ファイルグループに対して、新しいコンテナーを追加することができます。 持続性のあるメモリ最適化テーブルのために必要な記憶域を拡張するため、および複数のコンテナーにまたがって IO を分散するために、新しいコンテナーが必要になることがあります。

  • メモリ最適化ファイルグループでのデータの移動は、AlwaysOn 可用性グループ構成によって最適化されます。 セカンダリ レプリカに送信されるファイルストリームのファイルとは異なり、メモリ最適化ファイルグループ内のチェックポイント ファイル (データとデルタの両方) は、セカンダリ レプリカには送信されません。 データ ファイルとデルタ ファイルは、セカンダリ レプリカのトランザクション ログを使用して作成されます。

注意

メモリ最適化ファイル グループを使用した後、それを削除する唯一の方法はデータベースを削除することです。 運用環境において、メモリ最適化ファイルグループの削除が必要になることはほとんどありません。 空ではないコンテナーを削除することや、メモリ最適化ファイルグループ内でデータ ファイルとデルタ ファイルのペアを別のコンテナーに移動することはできません。

メモリ最適化ファイルグループの構成

メモリ最適化ファイルグループ内で複数のコンテナーを作成し、それらを複数のドライブに分散して、データをメモリにストリーミングするための帯域幅をより多く確保することを考慮してください。

複数のコンテナーと複数のドライブを使用するシナリオでは、データ ファイルとデルタ ファイルはラウンドロビン方式でコンテナーに割り当てられます。 最初のデータ ファイルは最初のコンテナーから割り当てられ、デルタ ファイルは次のコンテナーから割り当てられ、というように、この割り当てパターンが繰り返されます。 奇数個のドライブがあり、それぞれを 1 個のコンテナーにマップした場合は、この割り当て方法により、データ ファイルとデルタ ファイルが複数のコンテナーに対して均等に分散されます。 一方、偶数個のドライブがあり、それぞれを 1 個のコンテナーにマップした場合は、データ ファイルが奇数番目のドライブにマップされ、デルタ ファイルが偶数番目のドライブにマップされて不均等な記憶域という結果になる可能性があります。 復旧時に均等な I/O のストリームを取得するには、データ ファイルとデルタ ファイルのペアを同じスピンドル/記憶域に配置することを検討してください。

記憶域を構成する場合には、持続性のあるメモリ最適化テーブルの 4 倍のサイズの空きディスク領域を指定する必要があります。 また、I/O サブシステムで、対象のワークロードに必要な IOPS がサポートされていることを確認してください。 データ ファイルとデルタ ファイルのペアが特定の IOPS で作成される場合は、格納操作とマージ操作のために、3 倍の IOPS が必要です。 メモリ最適化ファイルグループに 1 つ以上のコンテナーを追加する方法で、記憶域容量と IOPS を追加できます。

注意

メモリ最適化ファイルグループに MAXSIZE 値が設定されており、チェックポイント ファイルがコンテナーの最大サイズを超えた場合、データベースは SUSPECT 状態になります。
この場合は、データベースの OFFLINE や ONLINE への設定を試行しないでください。試行すると、データベースが RECOVERY_PENDING 状態のままになります。

参照

メモリ最適化オブジェクト用ストレージの作成と管理
データベース ファイルとファイル グループ
ALTER DATABASE の File および Filegroup オプション (Transact-SQL)