◆ DTU の考え方/ボトルネックの確認方法
(2015年1月時点での情報)前述したように、Azure SQL Database では、DTU という単位で、パフォーマンス レベルが決定しています。
Basic や S0 は、価格が安い分、大きな制限を受けるエディションになっているので、簡単に CPU 利用率が 100% を使い切っている状態になったりします。
例えば、次のようにクエリを実行すると、CPU 負荷を高くすることができます(Basic エディションを利用している場合は、実行に 6分ぐらいかかります)。
WHILE @i <= 1000
BEGIN
DECLARE @kekka float
SELECT @kekka = RAND(a) FROM t1 ORDER BY NEWID()
SET @i += 1
END
このときの状況を dm_db_resource_stats 動的管理ビューで確認すると、次のようになります。
この結果は、Basic エディションの場合のもので、avg_cpu_percent(15秒間の平均 CPU 利用率)が 100% を使い切っている状態であることを確認できます。
このように、100%近辺を推移している(リソースを使い切っている)ということは、エディション/パフォーマンス レベルを上位のものに変更すれば、性能を上げられる可能性がある、ということを意味しています。
なお、動的管理ビューの結果は、次のようにグラフで確認することもできます。
CPU percentage の最大が 100%なので、DTU PERCENTAGE も 100%と表示される形になっています。DTU PERCENTAGE は、CPU、ディスクI/O、Log Write(Log I/O)のうち、いずれかの最大値を表示しているだけになります(3つのうち、どれかが高い値を示している、ということを知るための情報になっています)。
同じクエリを Standard エディションの S1 で実行した場合は、次のようになります。