-
Notifications
You must be signed in to change notification settings - Fork 0
MS_InMemoryOLTP
nishi_74322014 edited this page Aug 19, 2026
·
1 revision
- 戻る(SQL Server)
補足(原文が空欄のため、要点を補う): In-Memory OLTP
(旧称 Hekaton。SQL Server 2014 以降)のこと。
テーブルをメモリ常駐にし、ロック・ラッチを使わずに
高スループットな更新処理を行う機能である。
ディスク ベース テーブル メモリ最適化テーブル 配置 バッファ プール経由でディスク 常時メモリ上(全行がメモリに載る) 同時実行制御 ロック / ラッチ ロックフリー(楽観的な多版同時実行制御) インデックス B-Tree ハッシュ / 非クラスター化(メモリ専用構造) 永続性 常に永続 永続(SCHEMA_AND_DATA)/ 非永続(SCHEMA_ONLY)を選べる 主な効果 - ラッチ競合・ロック待ちの解消 単に「メモリに載せるから速い」のではない。
通常のテーブルでも、よく使うページは
バッファ プールに載っている。
本当の効果はロックとラッチの排除にある。【従来】 大量の同時更新 → ロック待ち・ラッチ競合 → CPU を使い切れない 【In-Memory OLTP】 競合そのものが構造的に発生しないしたがって、同一行・同一ページへの更新が集中して
スケールしないという症状に効く。
SQL Server でのロック・タイムアウト や
SQL Server のロックのエスカレーション で
扱う問題の、根本的な回避策の一つと言える。併せて提供される機能で、T-SQL をマシン語(DLL)にコンパイルして実行する。
インタープリタのオーバーヘッドが消えるため、
メモリ最適化テーブルへのアクセスがさらに速くなる。
- 全データがメモリに載る前提なので、
テーブル サイズ分のメモリ(+更新用の余裕)が必要になる。- メモリ不足になると更新が失敗する(ディスクへの退避が無い)。
- 制約や機能に制限がある(バージョンにより異なる)。
- SCHEMA_ONLY(永続化しない)は、
一時テーブル・セッション状態・ステージングの高速化に有効。
再起動で消えてよいデータなら、ログ書き込みすら不要になる。「まずこれを試す」機能ではない。
SQL Server 問題の分析方法 の手順で
ボトルネックを特定し、ロック / ラッチ待ちが支配的だと
分かった場合に検討する、という順序になる。
- インメモリ OLTP の概要と使用シナリオ
https://learn.microsoft.com/ja-jp/sql/relational-databases/in-memory-oltp/overview-and-usage-scenarios - メモリ最適化テーブル
https://learn.microsoft.com/ja-jp/sql/relational-databases/in-memory-oltp/memory-optimized-tables
Tags: 移行, データアクセス, SQL Server
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。