SE の雑記

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

SQL Database の新しいエディションの特性を調べてみる (2014/7 版)

leave a comment

以前、SQL Database の新しいエディションの特性を調べてみる という投稿をしました。

Azure SQL Database の更新情報: 新しいサービス レベルへの容易なアップグレード、パフォーマンスの向上、Basic データベースで PITR (ポイントインタイム リストア) をサポート、すべてのサービス レベルで自動エクスポートをサポート で紹介されているのですが、7 月になって Basic / Standard S1 / Standard S2 の DTU 数が変更され以下のようになりました。
image
image

日本語の情報はまだパフォーマンスの向上前の DTU 数になっていてので比較対象として使用しているのですが、上が向上前 / 下が向上後の DTU の情報となります。
Azure SQL データベースのサービス階層とパフォーマンス レベル
Azure SQL Database Service Tiers and Performance Levels

パフォーマンスレベル 向上前 向上後
Basic 1 5
Standard/S1 5 15
Standard/S2 25 50

Twitter を見ていたら、熊なのになぜか頻繁に猫と合成される数奇な人生を送るシグマクンから以下のようなお手紙をいただいていました。
# プライバシー保護のため一部モザイク化、モザイクの下に何があるかはご想像にお任せします m(_ _)m
image

ということでちょっと評価してみたいと思います。

評価に使用する方法は以前と同じ手法を使用しています。

評価用のテーブルを作成して、INSERT の性能特性を見るパターンと、

SET NOCOUNT ON
GO
CREATE TABLE Table_1
(
    c1 uniqueidentifier,
    c2 char(1000),
    CONSTRAINT PK_Table_1 PRIMARY KEY (c1)
)
GO
SELECT * FROM sys.dm_db_wait_stats  ORDER BY wait_type ASC
GO
INSERT INTO Table_1 VALUES(NEWID(), NEWID())
GO 5000
SELECT * FROM sys.dm_db_wait_stats  ORDER BY wait_type ASC
GO

 

複数のセッションから以下のクエリを実行して、SELECT の性能特性を見るパターンを実施しています。

SELECT COUNT(*) FROM Table_1 WITH (NOLOCK) 
ORDER BY NEWID()

 

まずは、INSERT 特性から見てみたいと思います

以下は処理時間の比較となります。

処理時間 前回 今回
Business 1:53 2:03
Basic 9:19 2:08
Standard/S1 4:35 1:56
Standard/S2 3:03 1:58

 

Business ~ S2 までほぼ同じ時間で処理が完了しました。

前回はパフォーマンスレベルに応じて処理時間にばらつきがあったのですが、今回は同一となっています。

Basic が以前の S1 相当になったので、それぐらいの処理時間になるかと思ったのですが、処理時間はそれ以上に向上していました。

それでは、待ち事象も確認してみたいと思います。

wait_type Business Basic S1 S2
Count Time (ms) Count Time (ms) Count Time (ms) Count Time (ms)
ASYNC_TRANSPORT_STREAM 2 0 2 0 1 0 2 0
CMEMTHREAD 3 0 10 1
LATCH_SH 0 0 0 0
LOG_RATE_GOVERNOR 14 349 141 1,523
PAGEIOLATCH_EX 1 9 0 0
PAGEIOLATCH_SH 0 0 0 0 0 0 0 0
PAGEIOLATCH_UP 2 13 2 2 2 1 2 1
PAGELATCH_EX 2 0 4 0 4 0 4 0
PAGELATCH_SH 0 0 0 0 0 0 0 0
RESOURCE_GOVERNOR_IDLE 31 410 1 1 0 0
SE_REPL_COMMIT_ACK 5,000 13,608 5,000 13,579 5,000 12,929 5,000 12,672
SE_REPL_QUEUE_TRUNCATE 1 0
SE_REPL_QUEUE_XACT_ACK 3 0 0 0 1 0 1 0
SOS_SCHEDULER_YIELD 37 1 73 5,488 66 9 65 26
WRITE_COMPLETION 4 3 8 65 8 8 8 6
WRITELOG 5,002 7,412 5,004 8,248 5,004 7,055 5,004 7,059

 

注目する必要がある待ち事象は 3 種類になると考えています。

  • LOG_RATE_GOVERNOR
  • RESOURCE_GOVERNOR_IDLE
  • WRITELOG

それでは、前回取得した内容と比較をしてみます。

wait_type Basic (前回) Basic (今回)
Count Time (ms) Count Time (ms)
ASYNC_TRANSPORT_STREAM 3 0 2 0
CMEMTHREAD 36 4 3 0
LATCH_SH
LOG_RATE_GOVERNOR 8,956 435,217 14 349
PAGEIOLATCH_EX 1 1
PAGEIOLATCH_SH 0 0 0 0
PAGEIOLATCH_UP 1 0 2 2
PAGELATCH_EX 2 0 4 0
PAGELATCH_SH 0 0
RESOURCE_GOVERNOR_IDLE 0 0 31 410
SE_REPL_COMMIT_ACK 5,000 14,726 5,000 13,579
SE_REPL_QUEUE_TRUNCATE 1 0
SE_REPL_QUEUE_XACT_ACK 6 1 0 0
SOS_SCHEDULER_YIELD 1 0 73 5,488
WRITE_COMPLETION 4 3 8 65
WRITELOG 5,002 9,655 5,004 8,248
wait_type S1 (前回) S1 (今回)
Count Time (ms) Count Time (ms)
ASYNC_TRANSPORT_STREAM 3 0 1 0
CMEMTHREAD 4 0 10 1
LATCH_SH 0 0
LOG_RATE_GOVERNOR 5,407 162,228 141 1,523
PAGEIOLATCH_EX 2 1 0 0
PAGEIOLATCH_SH 0 0 0 0
PAGEIOLATCH_UP 1 0 2 1
PAGELATCH_EX 1 0 4 0
PAGELATCH_SH 0 0
RESOURCE_GOVERNOR_IDLE 1 7 1 1
SE_REPL_COMMIT_ACK 5,000 13,676 5,000 12,929
SE_REPL_QUEUE_TRUNCATE 0 0
SE_REPL_QUEUE_XACT_ACK 0 0 1 0
SOS_SCHEDULER_YIELD 15 14 66 9
WRITE_COMPLETION 4 4 8 8
WRITELOG 5,002 8,021 5,004 7,055
wait_type S2 (前回) S2 (今回)
Count Time (ms) Count Time (ms)
ASYNC_TRANSPORT_STREAM 2 0 2 0
CMEMTHREAD 0 0
LATCH_SH 0 0
LOG_RATE_GOVERNOR 2,831 62,191
PAGEIOLATCH_EX 0 0
PAGEIOLATCH_SH 0 0 0 0
PAGEIOLATCH_UP 1 0 2 1
PAGELATCH_EX 3 0 4 0
PAGELATCH_SH 0 0
RESOURCE_GOVERNOR_IDLE 0 0 0 0
SE_REPL_COMMIT_ACK 5,000 12,977 5,000 12,672
SE_REPL_QUEUE_TRUNCATE 0 0
SE_REPL_QUEUE_XACT_ACK 0 0 1 0
SOS_SCHEDULER_YIELD 24 0 65 26
WRITE_COMPLETION 4 3 8 6
WRITELOG 5,002 7,724 5,004 7,059

 

LOG_RATE_GOVERNOR  の待ち事象が大幅に減少していることが確認できます。

DTU のパフォーマンス向上によって、この調整機構の閾値に変更 (もしくは調整機構のチューニング) が行われ、書き込み性能が向上したものと思われます。

 

それでは、読み取り性能を確認してみたいと思います。

左上から Business/Basic/S1/S2 となります。

imageimageimageimage

前回の取得結果と比較してみたいと思います。

前回 今回
処理時間 エラー数 処理時間 エラー数
Business 00:07.3908 0 00:06.8152 0
Basic 01:57.4251 883 02:16.9123 0
S1 02:28.5198 0 00:46.5336 0
S2 00:27.2976 0 00:13.8427 0
P1 00:08.8606 0
P2 00:07.2884 0

 

現行の Business に関しては処理時間に差はありません。

# 当然の結果ではありますが。

Basic については処理時間に大差はありませんが、エラー数に差が出ており、前回の S1 相当の内容となっています。

S2 については現行エディションのの性能と同等まではいきませんが、前回と比較して性能は向上していますね。

前回は取得していなかったのですが、SOS_SCHEDULER_YIELD にも差が出ているようです。

パフォーマンスレベルによって、CPU の仕様傾向にも差が出てくるようですね。

Count Time (ms)
Business 4 4
Basic 10 16,150
S1 8 3,158
S2 14 1,307

 

性能面で見ると今回のパフォーマンス向上のアップデートにより、全体的な性能が向上した傾向は取得できました。

Written by masayuki.ozawa

7月 20th, 2014 at 12:42 pm

Posted in 未分類

Leave a Reply

*