SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

いちからはじめる Memory Optimized Table その 1

leave a comment

SQL Server 2014 で実装される Memory Optimized Table (Hekaton) をじっくり勉強していきたいと思います。
勉強するにあたっては以下の情報が参考になります。
# 日本語だとメモリ最適化テーブルとかになるんですかね??

Books Online
In-Memory OLTP (In-Memory Optimization)

TechEd North America 2013
Microsoft SQL Server In-Memory OLTP: Overview of Project “Hekaton”
Microsoft SQL Server In-Memory OLTP Project “Hekaton”: Management Deep Dive
Microsoft SQL Server In-Memory OLTP Project “Hekaton”: App Dev Deep Dive

TechEd Europe 2013
Microsoft SQL Server 2014 In-Memory OLTP: Overview
Microsoft SQL Server 2014 In-Memory OLTP: DB Developer Deep Dive
Microsoft SQL Server 2014 In-Memory OLTP: Management Deep Dive

ホワイトペーパー
SQL Server In-Memory OLTP Internals Overview for CTP1

Microsoft research
Hekaton: SQL Server’s Memory-Optimized OLTP Engine
High-Performance Concurrency Control Mechanisms for Main-Memory Databases

@IT
SQL Server 2014 処理高速化の仕掛け/Redshiftの先行評価の内容とは? (1/2)

まずは Memory Optimized Table の基本的な構成を見ていきたいと思います。
詳細については Storage に記載されています。

SQL Server のテーブルはデータファイルとログファイルで構成されます。

Memory Optimized Table も構成としては同様の構成となりますが、ファイルグループに関してはデータ用のファイルグループではなく Memory Optimized Table 専用のファイルグループが使用されます。
ログファイルに関しては通常のテーブルと共用となります。
# Memory Optimized Table にはルートファイルもありますが下図では省略しています。
image

Memory Optimized Table は FILESTREAM を使用した専用のファイルグループが必要となり、その配下にデータを格納することになります。
imageimage

以下は Memory Optimized Table で使用するように設定したディレクトリの内容となります。

image

データファイルはデフォルトで 128MB で事前割り当てされます。 ファイルに関しては 256KB ページサイズとなっているようです。
最大で 4096 ファイルとなり、512GB のデータが格納できるようになるようです。
そのため、この 512GB が Memory Optimized Table のチェックポイントファイルのサイズ上限となるようですね。
# メモリ上のデータに関しては 256GB までをサポートとするようです。
Hardware Considerations for In-Memory OLTP in SQL Server 2014

デルタファイルはデフォルトでは 0KB となっており、こちらは 4KB ページとなっています。
#デルタファイルは削除データのタイムスタンプと行 ID を格納するために利用されています。

ファイルと用途については sys.dm_db_xtp_checkpoint_files から確認をすることができます。
# Memory Optimized Tabled 関連の DMV 等は xtp がついているものを調べるとよさそうです。 New and Updated Properties, System Views, Stored Procedures, Wait Types, and DMVs for In-Memory OLTP も目を通しておくとよさそうですね。
この動的管理ビューには [relative_path] という項目がありここから役割と実際のファイル名を確認することができます。
image

データファイルとデルタファイルのことをチェックポイントファイルと呼び、サービスの再起動などによりメモリの内容が初期化された場合はこれらのファイルを使用してデータの再ロードを行います。
実体はメモリ上のデータとなり、復旧のためにチェックポイントを残す形でしょうか。
# Memory Optimized Table に関しては、データの永続化をしない SCHEMA_ONLY というモードも用意されており、こちらだとデータの実体は完全にメモリだけとなり、再起動するとデータは破棄されます。

データファイルとデルタファイルはチェックポイントファイルペアとして 1 組のペアとして管理されるようになっています。
# ルートファイルに関してはペアは存在しないようです。
Memory Optimized Table は FILESTREAM のファイルグループが使用されており、これらのファイルに対しての I/O はストリーミング I/O として処理がされています。

これも sys.dm_db_xtp_checkpoint_files  の file_id と pair_file_id で確認することができます。
たとえば以下のようなクエリを実行することで実ファイルのペアを確認することができます。

SELECT
data.file_type_desc,
data.file_id,
data.pair_file_id,
RIGHT(data.relative_path, PATINDEX(‘%%’, REVERSE(data.relative_path)) -1) AS data_relative_file,
delta.file_type_desc,
RIGHT(delta.relative_path, PATINDEX(‘%%’, REVERSE(delta.relative_path)) -1) AS delta_relative_file
FROM
sys.dm_db_xtp_checkpoint_files AS data
INNER JOIN
sys.dm_db_xtp_checkpoint_files delta
ON
data.pair_file_id = delta.file_id
AND
delta.file_type = 2
WHERE
data.file_type = 1

image

基本的なファイル構成についてはこのようになっているようですね。
次も引き続き構成を確認してみたいと思います。


いちからはじめる Memory Optimized Table その 1 ←今回の投稿
いちからはじめる Memory Optimized Table その 2
いちからはじめる Memory Optimized Table その 3

Written by masayuki.ozawa

7月 8th, 2013 at 11:19 pm

Posted in SQL Server

Tagged with ,

Leave a Reply

*