SE の雑記

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

SQL Database v12 のリソース調整設定を確認してみる

leave a comment

SQL Database v12 のリソース調整設定を確認できそうな、sys.dm_user_db_resource_governance  という DMV があったので内容を確認したところ、パフォーマンスレベルに応じたリソース調整の設定を確認することができそうでした。
# S2 以上でないと DMV から情報を取得することができませんでしたが。
2015/3/16 に確認したところ、S1未満でも情報が取得できるようになっていました。

DTU の正体はこの辺のリソース調整なのかもしれないですね。

この DMV を使用すると以下のような情報が取得することができます。
下表は Basic ~ P3 までのデータベースで、冒頭で紹介した DMV の内容を取得したものになります。

image

わかりやすい設定となると、min_cores / max_dop になるでしょうか。
SQL Database v12 では、並列クエリを実行することが可能となりましたが、並列クエリについては、Premium の P2 以上でないと使用することができません。

S2~P3 の CPU の設定を抜粋してみると下表のようになります。

S2 S3 P1 P2 P3
min_cpu 0 0 0 0 0
max_cpu 100 100 100 100 100
cap_cpu 100 100 100 100 100
min_cores 1 1 1 2 8
max_dop 1 1 1 2 8

 

P2 以上が min_cores / max_dop の設定が 1 ではないことが確認できます。
P2 の場合は 2 / P3 の場合は 8 が設定されており、これが各パフォーマンスレベルの並列度の上限となります。
S2 でも cap_cpu については 100 となっているので、割り当てられているコア (min_cores) の上限までは CPU が使用できる設定となっているようですね。

メモリ系については、「max_db_memory」により制御が行われているのではと思います。
S2 で試したところ、実際に 2.3 GB 程度のデータはキャッシュすることができていたため、バッファキャッシュのメモリサイズの指標としてこの設定値を使うことができそうでした。
P3 になると、最大で 47GB 程度使用することができるようですね。

S2 S3 P1 P2 P3
max_db_memory 2,306,868 5,610,496 5,610,496 11,692,032 47,710,208

 

ディスク系については以下の項目から判断することができそうです。
複数の I/O 制御の項目を持っているようですが、I/O 数 / ログの書き込みレート / チェックポイント時のページ制限等はパフォーマンスレベルに応じたものが設定されているようです。

S2 S3 P1 P2 P3
primary_group_min_io 80 160 1,600 3,200 12,800
primary_group_max_io 80 160 1,600 3,200 12,800
primary_max_idle_credit_io 80 160 160 160 160
primary_checkpoint_page_limit 80 160 1,600 3,200 12,800
secondary_group_min_io 80 160 1,600 3,200 12,800
secondary_group_max_io 80 160 1,600 3,200 12,800
secondary_max_idle_credit_io 80 160 160 160 160
secondary_checkpoint_page_limit 80 160 1,600 3,200 12,800
govern_background_io 0 0 1 1 1
primary_max_log_rate 1,048,576 1,310,720 3,145,728 6,291,456 25,165,824
primary_min_log_rate 0 0 0 0 0
primary_log_commit_fee 3,000 3,000 3,000 3,000 3,000
secondary_max_log_rate 1,048,576 1,310,720 3,145,728 6,291,456 25,165,824
secondary_min_log_rate 0 0 0 0 0
secondary_log_commit_fee 3,000 3,000 3,000 3,000 3,000
slo_violation_io_min_iops 64 128 1,280 2,560 10,240
slo_violation_log_min_rate 838,860 1,048,576 2,516,582 5,033,164 20,132,659
VolumeLocalIOPS 200 320 1,760 3,520 14,080
VolumeManagedXstoreIOPS 200 320 2,750 5,500 22,000
VolumeExternalXstoreIOPS 200 320 2,750 5,500 22,000

 

S3 と P1 では DTU は両方とも 100 となっています。

image

 

ただし、Standard は分レベルのトランザクションレート / Premium は秒あたりのトランザクションレートを定めています。

主要な性能に影響する値を抜粋したものが下表となります。

S2 S3 P1 P2 P3
min_cpu 0 0 0 0 0
max_cpu 100 100 100 100 100
cap_cpu 100 100 100 100 100
min_cores 1 1 1 2 8
max_dop 1 1 1 2 8
max_db_memory 2,306,868 5,610,496 5,610,496 11,692,032 47,710,208
max_sessions 1,200 2,000 2,400 4,800 19,200
primary_group_max_workers 120 200 200 400 1,600
secondary_group_max_workers 120 200 200 400 1,600
primary_group_min_io 80 160 1,600 3,200 12,800
primary_group_max_io 80 160 1,600 3,200 12,800
primary_max_idle_credit_io 80 160 160 160 160
primary_checkpoint_page_limit 80 160 1,600 3,200 12,800
secondary_group_min_io 80 160 1,600 3,200 12,800
secondary_group_max_io 80 160 1,600 3,200 12,800
secondary_max_idle_credit_io 80 160 160 160 160
secondary_checkpoint_page_limit 80 160 1,600 3,200 12,800
primary_max_log_rate 1,048,576 1,310,720 3,145,728 6,291,456 25,165,824
primary_log_commit_fee 3,000 3,000 3,000 3,000 3,000
secondary_max_log_rate 1,048,576 1,310,720 3,145,728 6,291,456 25,165,824
slo_violation_io_min_iops 64 128 1,280 2,560 10,240
slo_violation_log_min_rate 838,860 1,048,576 2,516,582 5,033,164 20,132,659
VolumeLocalIOPS 200 320 1,760 3,520 14,080
VolumeManagedXstoreIOPS 200 320 2,750 5,500 22,000
VolumeExternalXstoreIOPS 200 320 2,750 5,500 22,000

 

CPU / メモリの調整に関しては S3 / P1 ともに同じです。
セッション数については多少 P1 のほうが多いようですね。

大きく異なるのはディスク系の調整かと思います。
「primary_max_idle_credit_io」については S3/P1 ともに 「160」となっています。
待機状態で担保されている I/O についてはどちらも変わらないのかもしれないですね。
しかし最大の I/O についてはリミットが変わっています。
S3 では、I/O 関連の制御は一律で 160 程度なっていますが、P1 では「1,600」と 10 倍の値となっています。
また、ログの書き込みレートも S3 では「1,310,720」となっていますが、P1 では「3,145,728」と設定が異なっています。
このあたりの違いが、分単位の性能保証と秒単位の性能保証の違いとして表れてきているのかと。

性能の指標や、リソースの上限に達した場合にどのパフォーマンスレベルに移行すればよいかの検討としてこれらの情報は有益そうですね。

Written by masayuki.ozawa

2月 18th, 2015 at 8:48 pm

Posted in SQL Database

Tagged with

Leave a Reply

*