インメモリ OLTP データベースにおける高可用性のサポート

適用対象:SQL Server

メモリ最適化テーブルを含んだデータベースは、ネイティブ コンパイル ストアド プロシージャの有無に関係なく、AlwaysOn 可用性グループで完全にサポートされます。 インメモリ OLTP オブジェクトが含まれている場合とそうでない場合とで、データベースの構成とサポートに違いはありません。

プライマリ レプリカ上のメモリ最適化テーブルに対する変更は、再実行の間にセカンダリ レプリカのテーブルに適用されます。 これにより、データが既にメモリ内にあるため、セカンダリ レプリカへの迅速なフェールオーバーが可能になります。 テーブルは、読み取りアクセス用に構成されているレプリカのセカンダリに対する読み取りクエリに利用できます。

AlwaysOn 可用性グループとインメモリ OLTP データベース

インメモリ OLTP のコンポーネントを使ってデータベースを構成する場合、次の利点があります。

  • 完全に統合された環境
    メモリ最適化テーブルを含んだデータベースは、同期と非同期のどちらのセカンダリ レプリカに対しても同じウィザードを使用して構成でき、同じサポート レベルが適用されます。 加えて、使い慣れた SQL Server Management Studio の AlwaysOn ダッシュボードを使用して、正常性の監視を行うことができます。

  • 同等のフェールオーバー時間
    持続性のあるメモリ最適化テーブルのインメモリ状態がセカンダリ レプリカで維持されます。 自動フェールオーバーまたは強制フェールオーバーが発生した場合に復旧の必要がないため、新しいプライマリへのフェールオーバーにかかる時間はディスク ベースのテーブルと変わりありません。 この構成では、SCHEMA_ONLY として作成されたメモリ最適化テーブルがサポートされます。 ただし、これらのテーブルに対する変更はログに記録されないため、セカンダリ レプリカ上のこれらのテーブルにはデータはありません。

  • [読み取り可能セカンダリ]
    セカンダリ レプリカが読み取りアクセス用に構成されている場合、セカンダリ レプリカ上のメモリ最適化テーブルにアクセスしてクエリを実行することができます。 SQL Server 2016 (13.x) では、セカンダリ レプリカ上の読み取りタイムスタンプは、プライマリ レプリカ上の読み取りタイムスタンプと同期に近い状態で保たれます。そのため、プライマリ レプリカへの変更はセカンダリにすばやく反映されます。 この同期に近い動作は、SQL Server 2014 (12.x) のインメモリ OLTP とは異なります。

考慮事項

  • SQL Server 2019 では、メモリ最適化可用性グループ データベースに対する並列再実行が導入されました。 SQL Server 2016 と 2017 では、可用性グループ内のデータベースがメモリ最適化もされている場合、ディスク ベースのテーブルで並列再実行は使用されません。

フェールオーバー クラスタリング インスタンス (FCI) とインメモリ OLTP データベース

共有記憶域構成で高可用性を実現するには、メモリ最適化テーブルを使用するデータベースでフェールオーバー クラスター インスタンスを設定できます。 FCI を設定する場合、次の要素を考慮してください。

  • 目標復旧時間
    データベースを使用可能にするには、メモリ最適化テーブルをメモリに読み込む必要があるため、フェールオーバーの所要時間は長くなる可能性があります。

  • SCHEMA_ONLY テーブル
    フェールオーバー後、SCHEMA_ONLY テーブルは、データ行の存在しない空の状態になるので注意してください。 これは仕様であり、アプリケーションで定義された動作です。 1 つ以上の SCHEMA_ONLY テーブルを含むインメモリ OLTP データベースを再起動したときもまったく同じ動作となります。

インメモリ OLTP におけるトランザクション レプリケーションのサポート

トランザクション レプリケーションのサブスクライバーとして機能するテーブルは、ピア ツー ピア トランザクション レプリケーションを除き、メモリ最適化テーブルとして構成できます。 その他のレプリケーション構成はメモリ最適化テーブルとは互換性がありません。 詳細については、「メモリ最適化テーブル サブスクライバーへのレプリケーション」を参照してください。

参照

Always On 可用性グループ (SQL Server)
Always On 可用性グループの概要 (SQL Server)
アクティブなセカンダリ: 読み取り可能なセカンダリ レプリカ (Always On 可用性グループ)
メモリ最適化テーブル サブスクライバーへのレプリケーション