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を基にした投稿です





