web-dev-qa-db-ja.com

SQL Serverでリソースガバナーを無効にする

リソースガバナーを無効にした後、SQL Serverを再起動する必要がありますか?ベストプラクティスは何ですか?

SQL Serverで開かれている既存のセッションについて心配しているので、なぜこれを求めているのですか。リソースガバナーのみを無効にし、SQLサービスを再起動しない場合、それらの動作は(CPU、メモリ、IOの観点から)デフォルトに変更されますか?

たとえば、リソースガバナのために、特定のセッションがシステムの総メモリの30%を使用するように制限されている場合です。では、リソースガバナーを単独で無効にすると、即座に30%以上使用し始めるのでしょうか。

SQL Serverを再起動せずに、リソースガバナーの設定を頻繁に変更しています。分類機能の変更を除いて、リソースガバナーの設定を変更した後、SQL Serverを再起動する必要があることは知りません。知っておくと便利なことがいくつかあります。

  • セッションは、リソースガバナーワークロードグループに割り当てられると、分類機能が変更されても、そこに残ります。
  • リソースガバナー設定のクエリプランのコンパイルアカウントを見たことがありません。
  • クエリ実行のいくつかの側面は、MAXDOPやクエリメモリなど、クエリ実行の開始時に決定されます。特定の種類のインデックス作成やバッチモードで実行されるクエリなど、例外が常に当てはまるわけではないことに注意してください。

変更がクエリに適用されたときに完全に回答する正確な回答(「瞬時」かどうかに関係なく)は、おそらくここでの回答の範囲外です。 SQL Serverが実行していることがワークロードで問題ないことを納得させるために、気になる点を理解し、必要に応じてテストを行うことをお勧めします。たとえば、リソースガバナーのワークロードグループ構成で利用可能なMAXDOP制限について考えます。ほぼすべてのクエリについて、MAXDOPはクエリの実行時に決定されるため、リソースガバナーを無効にして現在実行中のクエリのMAXDOPを変更することは期待できません。ただし、セッションに対して開始される次のクエリは、MAXDOPで制限されなくなります。ただし、並列プランのクエリ中にスカラーUDFが何度も実行されている場合はどうなりますか? MAXDOPはそのクエリで変更される可能性があると思いますが、これをテストしたことがなく、テストする必要もありません。推測する必要がある場合は、次のすべてが「瞬時に」更新されると思います。

  • MIN_CPU_PERCENT
  • MAX_CPU_PERCENT
  • CAP_CPU_PERCENT
  • MIN_IOPS_PER_VOLUME
  • MAX_IOPS_PER_VOLUME
  • 重要性
  • REQUEST_MAX_CPU_TIME_SEC
  • GROUP_MAX_REQUESTS

次のクエリが実行を開始した後でのみ、これらすべてが更新されます。

  • MIN_MEMORY_PERCENT
  • MAX_MEMORY_PERCENT
  • アフィニティ
  • REQUEST_MAX_MEMORY_GRANT_PERCENT
  • REQUEST_MEMORY_GRANT_TIMEOUT_SEC
  • MAX_DOP
7
Joe Obbish