Azure SQL Database の DTU (Database Throughput Unit)て知ってます?
Microsoft Azure SQL Databaseの提供形態が変わろうとしています。
これまでは、使用領域に応じた課金でしたが、今後はパフォーマンスと機能に応じた課金に変わります。
パフォーマンスをベースにした課金になりますが、パフォーマンスとはどういった定義なのでしょうか?その話をすると出てくるのが、次の2つの概念です。
- Database Throughput Unit – DTU
- Azure SQL Database Benchmark – ASDB
Database Throughput Unit – DTU
データベースにアサインする性能に関係するリソースに相当します。
CPU、メモリ、Read、Writeを混ぜ合わせて計測します。
そして、性能レベルを比較します。
これが性能について話をするのに話が早くなります。(IOPSと%を比較することを想像してください)
詳細は、MSDNライブラリ「Azure SQL データベースのサービス階層とパフォーマンス レベル」を参照してください。
Azure SQL Database Benchmark – ASDB
OLTPのワークロードです。
常に提供されているメモリよりも大きくてさまざまなテーブルサイズのテーブル6つを使用します。
9種類のトランザクションをしようします。
SELECT、DELETE、INSERT、UPDATEなど複数のトランザクションを使用しています。
詳細は:MSDNライブラリ「Azure SQL データベースのベンチマークの概要」を参照
提供されるサービス帯による性能比較
トランザクション数は、あくまでも例。DBトランザクション制限をハードで入れているわけではない。
サービス階層/パフォーマンス レベル | DTU | 最大 DB サイズ | 最大 ワーカー スレッド | 最大 セッション | ベンチマーク トランザクション率 | 予測可能性 |
---|---|---|---|---|---|---|
Basic |
1 |
2 GB |
20 |
100 |
3,467 トランザクション/時間 |
良い |
Standard/S1 |
5 |
250 GB |
50 |
200 |
283 トランザクション/分 |
高 |
Standard/S2 |
25 |
250 GB |
100 |
500 |
1,470 トランザクション/分 |
高 |
Premium/P1 |
100 |
500 GB |
200 |
2,000 |
98 トランザクション/秒 |
最高 |
Premium/P2 |
200 |
500 GB |
400 |
4,000 |
192 トランザクション/秒 |
最高 |
Premium/P3 |
800 |
500 GB |
1,600 |
16,000 |
730 トランザクション/秒 |
最高 |
パフォーマンスレベルの変更方法
PowerShellの「Set-AzureSqlDatabase」を使用するか、TSQLの「ALTER Database」を使用するか、管理ポータルで操作するか、REST APIたたくか、.NETでたたくかですね。
モニタリング方法
Azureポータルでスケールアップすべきかどうか、スケールダウンさせるべきかどうかを見れるようになります。
master.sys.resource_statsでも提供されます。5分の平均値を取得しています。
クエリチューニング
- sys.dm_exec_query_stats
- sys.dm_exec_query_sql_text()
- sys.dm_exec_query_plan
- sys.dm_exec_requests
- sys.dm_exec_sessions
Designing Modern Apps using New Capabilities in Microsoft Azure SQL Database, Deep Diveを基にした投稿です