0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

インスタンスストアにTEMPDBを配置してみた 5

Posted at

データ量を増やしてリトライ

65,536件ではメモリに収まってしまうため、さらに16倍して16,777,216件で比較してみたところ、大差がつきました。
レコード長は約80Kなので、それにレコード数を掛けると、約78GBとなります。
このデータ量なら、メモリには収まらず、ディスク容量の範囲で収まるテストになります。
テスト直後の画像ですが、およそそのような感じになりました。
image.png

データ件数を増やしたコード

Declare @cd nvarchar(max) = REPLICATE('X', 4000);

Declare @t1 datetime2;
Declare @t2 datetime2;
Declare @t3 datetime2;
Declare @t4 datetime2;

Declare @c1 nvarchar(max) = Convert(nvarchar, RAND(0));
Declare @c2 nvarchar(max) = Convert(nvarchar, SYSDATETIME(), 121);
Declare @c3 nvarchar(max) = Convert(nvarchar,Convert(char(255), NEWID()));

Drop Table If Exists #test1
Create Table #test1(
	c0 bigint,
	c1 nvarchar(max),
	c2 nvarchar(max),
	c3 nvarchar(max),
	c4 nvarchar(max),
	c5 nvarchar(max),
	c6 nvarchar(max),
	c7 nvarchar(max),
	c8 nvarchar(max),
	c9 nvarchar(max)
);

Set @t1 = SYSDATETIME();

With 
N1(dummy) as (
Select 0 Union ALL Select 0), --2rows
N2(dummy) as (
Select 0 From N1 as T1 Cross Join N1 as T2), --4rows
N3(dummy) as (
Select 0 From N2 as T1 Cross Join N2 as T2), --16rows
N4(dummy) as (
Select 0 From N3 as T1 Cross Join N3 as T2), --256rows
N5(dummy) as (
Select 0 From N4 as T1 Cross Join N4 as T2), --65536rows
N6(dummy) as (
Select 0 From N3 as T1 Cross Join N5 as T2), --16777216 rows
NX(id) as (
Select ROW_NUMBER() over (order by(Select Null)) From N6)

Insert into #test1
Select id, @cd, @cd, @cd, @cd, @cd, @cd, @cd, @cd, @cd
From NX;

Set @t2 = SYSDATETIME();

Update #test1
Set c1 = @c1, c2 = @c2, c3 = @c3
Where (c0 % 7) = 3

Set @t3 = SYSDATETIME();

Select *
From #test1

Set @t4 = SYSDATETIME();

Select 
	DATEDIFF(MILLISECOND, @t1, @t2) as t1,
	DATEDIFF(MILLISECOND, @t2, @t3) as t2,
	DATEDIFF(MILLISECOND, @t3, @t4) as t3,
	DATEDIFF(MILLISECOND, @t1, @t4) as t4

結果

tempdbの場所 t1 t2 t3 t4
D: 600,510 182,344 5,265,008 6,047,862(1時間40分48秒)
E: 589,095 43,823 1,348,648 1,981,566(33分2秒)

コメント

トータル所要時間(t4)で約3倍の差がつきました。
ただし、t1の差はほとんどありません。
大量データをヒープテーブルに投入する場合は今回の条件下では差がつかなかったので、I/Oの特性が違うのだと思います。今後の課題としておきます。

CloudWatchの結果

t1区間と、t2, t3区間でのグラフがはっきりと違う傾向を示しました。
t1区間ではどちらのテストでも、約2000IOPS, 125MB/sec出ています。
このため時間的にも差がつかなかったと考えられます。
t2, t3区間では、IOPS・スループットともに大差がついていました。

Dドライブ(EBS)を使った場合

image.png

Eドライブ(インスタンスストア)を使った場合

image.png

終わりに

インスタンスストアは同コストのEBSと比べてやっぱり速かったです。
でも色々な条件によって得られる結果は変わってくると思うので、盲目的にならず、検証は必要だなと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?