SE の雑記

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

メモリ最適化テーブルデータ型を使ってみる

leave a comment

SQL Server 2014 の In-Memory OLTP のメモリ最適化テーブルでは一時テーブルを作成来ることはできません。
image

ただし、メモリ最適化テーブルデータ型 (Memory-Optimized Table Type)  を作成することができます。

Transact-SQL によるインメモリ OLTP のサポート
CREATE TYPE (Transact-SQL)
DECLARE @local_variable (Transact-SQL)

ユーザー定義テーブル型を新規作成する際に [ユーザー定義の目盛最適化テーブルの型] を作成することができます。

image

以下のようなクエリでメモリ最適化テーブルのデータ型を作成することができます。

USE HekatonDB
GO
IF TYPE_ID('dbo.MemoryTableType') IS NOT NULL
    DROP TYPE dbo.MemoryTableType
GO
CREATE TYPE dbo.MemoryTableType AS TABLE
(
	c1 int NOT NULL,
	c2 int NOT NULL,
	c3 int NOT NULL INDEX ix_MemoryTT_c3 NONCLUSTERED (c3),
	c4 int NOT NULL INDEX hash_index_MemoryTT_c4 NONCLUSTERED HASH (c4) WITH(BUCKET_COUNT = 10000),
   PRIMARY KEY NONCLUSTERED (c1),
   INDEX hash_index_MemoryTT_c3 HASH (c2) WITH (BUCKET_COUNT = 10000)
) WITH (MEMORY_OPTIMIZED = ON)
GO

 

これでユーザー定義テーブル型として登録されますので、これを一時的にデータを格納するテーブルとして利用することができます。

DECLARE @MemoryTableType MemoryTableType
INSERT INTO @MemoryTableType VALUES(1,1,1,1)
SELECT * FROM @MemoryTableType
GO
DECLARE @MemoryTableType MemoryTableType
SELECT * FROM @MemoryTableType
GO

 

image

ネイティブコンパイルされたストアドプロシージャーでは一時テーブルや通常のユーザー定義のテーブル型は作成できませんが、メモリ最適化テーブル型であれば使用できますので、一時的にデータを格納したい場合などはこれを使うとよさそうです。

Share

Written by Masayuki.Ozawa

11月 10th, 2013 at 3:00 pm

Posted in SQL Server

Tagged with ,

Leave a Reply