監視を通じてパフォーマンスの問題を特定する

推定所要時間:30 分

受講生は、レッスンで得た情報を利用して、AdventureWorksLT 内のデジタルトランスフォーメーション プロジェクトの成果物を調べます。 受講者は、Azure portal と他のツールを調べ、ツールを利用してパフォーマンス関連の問題を特定し、解決する方法を決定します。

あなたは、パフォーマンス関連の問題を見つけ出して、見つかった問題を解決するための実用的ソリューションを提供するデータベース管理者として雇用されています。 あなたは Azure portal を使用してパフォーマンスの問題を特定し、それらを解決する方法を提案する必要があります。

📝 これらの演習では、T-SQL コードをコピーして貼り付け、既存の SQL リソースを使うように求められます。 コードを実行する前に、コードが正しくコピーされていることを確認してください。

環境をセットアップします

ラボ仮想マシンが提供され、事前に構成されている場合は、C:\LabFiles フォルダーにラボ ファイルが用意されているはずです。 少し時間をとって確認してください。ファイルが既に存在存在している場合には、このセクションをスキップしてください。 ただし、独自のマシンを使用している場合、またはラボ ファイルが見つからない場合は、 GitHub からそれらを複製して続行する必要があります。

  1. ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、Visual Studio Code のセッションを起動します。

  2. コマンド パレット (Ctrl+Shift+P) を開き、「Git Clone」と入力します。 [Git: Clone] オプションを選択します。

  3. [Repository URL] フィールドに次の URL を貼り付け、Enter キーを押します。

     https://github.com/MicrosoftLearning/dp-300-database-administrator.git
    
  4. リポジトリを、ラボ仮想マシン、または提供されていない場合はローカル コンピューターの [C:\LabFiles] フォルダーに保存してください(フォルダーが存在しない場合は作成します)。

Azure で SQL Server を構成する

Azure にログインし、Azure で実行されている既存の Azure SQL Server インスタンスがあるかどうかを確認します。 Azure で SQL Server インスタンスが既に実行されている場合は、このセクションをスキップします

  1. ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、Visual Studio Code セッションを起動し、前のセクションから複製されたリポジトリに移動します。

  2. /Allfiles/Labs フォルダーを右クリックし、[統合ターミナルで開く] を選択します。

  3. Azure CLI を使用して Azure に接続しましょう。 次のコマンドを入力して、Enter キーを押します。

     az login
    

    📝 ブラウザー ウィンドウが開くことに注意してください。 ログインには Azure 資格情報を使用してください。

  4. Azure にログインしたら、リソース グループがまだ存在しない場合は作成し、そのリソース グループの下に SQL サーバーとデータベースを作成します。 次のコマンドを入力して、Enter キーを押します。 スクリプトが完了するまで数分かかります

     cd ./Setup
     ./deploy-sql-database.ps1
    

    📝 既定では、このスクリプトは contoso-rg というリソース グループを作成するか、名前が contoso-rg (存在する場合) で始まるリソースを使用していることに注意してください。 既定では、 West US 2 リージョン (westus2) にもすべてのリソースが作成されます。 最後に、 SQL 管理者パスワードのランダムな 12 文字のパスワードを生成します。 これらの値は、パラメーター -rgName-location-sqlAdminPw のいずれかまたは複数を使用して、任意の値に変更することができます。 パスワードは Azure SQL のパスワードの複雑さの要件を満たす必要があります。具体的には、12文字以上で、大文字 1 文字、小文字 1 文字、数字 1 つ、特殊文字 1 つを含める必要があります。

    📝 スクリプトによって、現在のパブリック IP アドレスが SQL Server ファイアウォール規則に追加されることに注意してください。

  5. スクリプトが完了すると、リソース グループ名、SQL Server 名とデータベース名、管理者ユーザー名とパスワードが返されます。 これらの値は、後でラボで必要になりますのでメモしておきます


Azure portal の CPU 使用率を確認する

  1. ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、ブラウザー セッションを起動し、 https://portal.azure.comに移動します。 Azure 資格情報を使用して、Azure portal に接続します。

  2. Azure portal の上部にある検索ボックスで SQL サーバーを検索し、オプションの一覧から SQL サーバーを選択します。

  3. SQL Server dp300-lab-xxxxxxxx を選択します。xxxxxxxx はランダムな数値文字列です。

    📝 このラボで作成されていない独自の Azure SQL Server を使用している場合は、その SQL Server の名前を選択します。

  4. Azure SQL Server のメインページで、[セキュリティ] の下にある [ネットワーク] を選択します。

  5. [ネットワーク] ページで、現在のパブリック IP が [ファイアウォール規則] 一覧に既に追加されているかどうかを確認します。そうでない場合は、[+ クライアント IPv4 アドレス (お使いの IP アドレス) の追加] を選択して追加し、[保存] を選択します。

  6. Azure SQL Server のメイン ブレードで、 [設定] セクションに移動し、 [SQL データベース] を選択して、AdventureWorksLT データベースを選択します。

  7. 左側のナビゲーションで、[クエリ エディター (プレビュー)] を選択します。

    注: この機能はプレビュー段階にあります。

  8. SQL Server 管理者ユーザー名を選択し、データベースへの接続に割り当てられている場合は、パスワードまたは Microsoft Entra 資格情報を入力します。

  9. [クエリ 1] に次のクエリを入力し、 [実行] を選択します。

     DECLARE @Counter INT 
     SET @Counter=1
     WHILE ( @Counter <= 10000)
     BEGIN
         SELECT 
              RTRIM(a.Firstname) + ' ' + RTRIM(a.LastName)
             , b.AddressLine1
             , b.AddressLine2
             , RTRIM(b.City) + ', ' + RTRIM(b.StateProvince) + '  ' + RTRIM(b.PostalCode)
             , CountryRegion
             FROM SalesLT.Customer a
             INNER JOIN SalesLT.CustomerAddress c 
                 ON a.CustomerID = c.CustomerID
             RIGHT OUTER JOIN SalesLT.Address b
                 ON b.AddressID = c.AddressID
         ORDER BY a.LastName ASC
         SET @Counter  = @Counter  + 1
     END
    
  10. クエリが完了するまで待ちます。

  11. クエリをさらに 2 回再実行して、データベースに対する CPU 負荷を多少発生させます。

  12. AdventureWorksLT データベースのウィンドウの [監視] セクションで、 [メトリック] アイコンを選択します。

    保存されていない編集は破棄されます” というメッセージがポップアップ表示されたら、[OK] を選択します。

  13. [CPU percentage] を反映するように [メトリック] メニュー オプションを変更し、 [平均][集計] を選択します。これにより、特定の時間枠の CPU の割合の平均が表示されます。

  14. 時間の経過に伴う CPU 平均を観察します。 クエリの実行時、グラフの最後に CPU 使用率が急増している点に注意してください。

CPU 使用率が高いクエリを特定する

  1. AdventureWorksLT データベースのウィンドウの [インテリジェント パフォーマンス] セクションで [Query Performance Insight] アイコンを見つけます。

  2. [設定のリセット] を選択します。

  3. グラフの下のグリッドにあるクエリをを選択します。 以前に複数回実行したクエリが表示されない場合は、最大 2 から 5 分待ってから [最新の情報に更新] を選択します。

    📝複数のクエリが一覧表示されている場合は、それぞれを選択して結果を確認します。 クエリごとに豊富な情報が入手できることに注意してください。

  4. 先ほど実行したクエリの場合は、合計時間が 1 分を超えており、約 3 万回実行されたことがわかります。

  5. 実行したクエリに対して [クエリの詳細] ページで SQL テキストを確認すると、[クエリの詳細]SELECT ステートメントのみが含まれており、WHILE ループやその他のステートメントは含まれていないことがわかります。 この理由は、クエリ パフォーマンスの分析情報クエリ ストアからのデータに依存しているからです。クエリ ストアでは、SELECT、INSERT、UPDATE、DELETE、MERGE、BULK INSERT などのデータ操作言語 (DML) ステートメントのみを追跡する一方、データ定義言語 (DDL) ステートメントを無視します。

パフォーマンスに関するすべての問題が、1 回のクエリ実行による高い CPU 使用率に関連しているわけではありません。 このクエリの場合は、何千回も実行されており、その結果、CPU 使用率が高くなる可能性もあります。


リソースをクリーンアップする

Azure SQL Server を他の目的で使用していない場合は、このラボで作成したリソースをクリーンアップできます。

リソース グループを削除します

このラボの新しいリソース グループを作成した場合は、リソース グループを削除して、このラボで作成されたすべてのリソースを削除できます。

  1. Azure portal で、左側のナビゲーション ペインから リソース グループ を選択するか、検索バーで リソース グループを検索して、結果からそのリソース グループを選択します。

  2. このラボ用に作成したリソース グループに移動します。 リソース グループには、Azure SQL Server と、このラボで作成されたその他のリソースが含まれます。

  3. トップ メニューから [リソース グループの削除] を選択します。

  4. [リソース グループの削除] ダイアログで、リソース グループの名前を入力して確認した後、[削除] を選択します。

  5. リソース グループが削除されるのを待ちます。

  6. Azure Portal を閉じます。

ラボ リソースのみを削除する

このラボ用の新しいリソース グループを作成せず、リソース グループとその以前のリソースをそのまま残したい場合は、このラボで作成したリソースを削除できます。

  1. Azure portal で、左側のナビゲーション ペインから リソース グループ を選択するか、検索バーで リソース グループを検索して、結果からそのリソース グループを選択します。

  2. このラボ用に作成したリソース グループに移動します。 リソース グループには、Azure SQL Server と、このラボで作成されたその他のリソースが含まれます。

  3. ラボで以前に指定した SQL Server 名のプレフィックスが付いたすべてのリソースを選択します。

  4. トップ メニューから、削除を選択します。

  5. [リソースの削除] ダイアログで、「delete」と入力し、[削除] を選択します。

  6. [削除] をもう一度選択し、リソースの削除を確定します。

  7. リソースが削除されるまで待ちます。

  8. Azure Portal を閉じます。

LabFiles フォルダーを削除する

このラボ用に新しい LabFiles フォルダーを作成して、それが不要になった場合は、LabFiles フォルダーを削除して、このラボで作成されたすべてのファイルを削除できます。

  1. ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、エクスプローラーを開き、 C:\ ドライブに移動します。
  2. LabFiles フォルダーを右クリックし、[削除] を選択します。
  3. [はい] を選択して、フォルダーの削除を確認します。

このラボは以上で完了です。

この演習では、Azure SQL Database のサーバー リソースを調べ、Query Performance Insight を使用して潜在的なクエリのパフォーマンス問題を特定する方法を学習しました。