監視を通じてパフォーマンスの問題を特定する
推定所要時間:30 分
受講生は、レッスンで得た情報を利用して、AdventureWorksLT 内のデジタルトランスフォーメーション プロジェクトの成果物を調べます。 受講者は、Azure portal と他のツールを調べ、ツールを利用してパフォーマンス関連の問題を特定し、解決する方法を決定します。
あなたは、パフォーマンス関連の問題を見つけ出して、見つかった問題を解決するための実用的ソリューションを提供するデータベース管理者として雇用されています。 あなたは Azure portal を使用してパフォーマンスの問題を特定し、それらを解決する方法を提案する必要があります。
📝 これらの演習では、T-SQL コードをコピーして貼り付け、既存の SQL リソースを使うように求められます。 コードを実行する前に、コードが正しくコピーされていることを確認してください。
環境をセットアップします
ラボ仮想マシンが提供され、事前に構成されている場合は、C:\LabFiles フォルダーにラボ ファイルが用意されているはずです。 少し時間をとって確認してください。ファイルが既に存在存在している場合には、このセクションをスキップしてください。 ただし、独自のマシンを使用している場合、またはラボ ファイルが見つからない場合は、 GitHub からそれらを複製して続行する必要があります。
-
ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、Visual Studio Code のセッションを起動します。
-
コマンド パレット (Ctrl+Shift+P) を開き、「Git Clone」と入力します。 [Git: Clone] オプションを選択します。
-
[Repository URL] フィールドに次の URL を貼り付け、Enter キーを押します。
https://github.com/MicrosoftLearning/dp-300-database-administrator.git
-
リポジトリを、ラボ仮想マシン、または提供されていない場合はローカル コンピューターの [C:\LabFiles] フォルダーに保存してください(フォルダーが存在しない場合は作成します)。
Azure で SQL Server を構成する
Azure にログインし、Azure で実行されている既存の Azure SQL Server インスタンスがあるかどうかを確認します。 Azure で SQL Server インスタンスが既に実行されている場合は、このセクションをスキップします。
-
ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、Visual Studio Code セッションを起動し、前のセクションから複製されたリポジトリに移動します。
-
/Allfiles/Labs フォルダーを右クリックし、[統合ターミナルで開く] を選択します。
-
Azure CLI を使用して Azure に接続しましょう。 次のコマンドを入力して、Enter キーを押します。
az login
📝 ブラウザー ウィンドウが開くことに注意してください。 ログインには Azure 資格情報を使用してください。
-
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 ファイアウォール規則に追加されることに注意してください。
-
スクリプトが完了すると、リソース グループ名、SQL Server 名とデータベース名、管理者ユーザー名とパスワードが返されます。 これらの値は、後でラボで必要になりますのでメモしておきます。
Azure portal の CPU 使用率を確認する
-
ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、ブラウザー セッションを起動し、 https://portal.azure.comに移動します。 Azure 資格情報を使用して、Azure portal に接続します。
-
Azure portal の上部にある検索ボックスで SQL サーバーを検索し、オプションの一覧から SQL サーバーを選択します。
-
SQL Server dp300-lab-xxxxxxxx を選択します。xxxxxxxx はランダムな数値文字列です。
📝 このラボで作成されていない独自の Azure SQL Server を使用している場合は、その SQL Server の名前を選択します。
-
Azure SQL Server のメインページで、[セキュリティ] の下にある [ネットワーク] を選択します。
-
[ネットワーク] ページで、現在のパブリック IP が [ファイアウォール規則] 一覧に既に追加されているかどうかを確認します。そうでない場合は、[+ クライアント IPv4 アドレス (お使いの IP アドレス) の追加] を選択して追加し、[保存] を選択します。
-
Azure SQL Server のメイン ブレードで、 [設定] セクションに移動し、 [SQL データベース] を選択して、AdventureWorksLT データベースを選択します。
-
左側のナビゲーションで、[クエリ エディター (プレビュー)] を選択します。
注: この機能はプレビュー段階にあります。
-
SQL Server 管理者ユーザー名を選択し、データベースへの接続に割り当てられている場合は、パスワードまたは Microsoft Entra 資格情報を入力します。
-
[クエリ 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
-
クエリが完了するまで待ちます。
-
クエリをさらに 2 回再実行して、データベースに対する CPU 負荷を多少発生させます。
-
AdventureWorksLT データベースのウィンドウの [監視] セクションで、 [メトリック] アイコンを選択します。
“保存されていない編集は破棄されます” というメッセージがポップアップ表示されたら、[OK] を選択します。
-
[CPU percentage] を反映するように [メトリック] メニュー オプションを変更し、 [平均] の [集計] を選択します。これにより、特定の時間枠の CPU の割合の平均が表示されます。
-
時間の経過に伴う CPU 平均を観察します。 クエリの実行時、グラフの最後に CPU 使用率が急増している点に注意してください。
CPU 使用率が高いクエリを特定する
-
AdventureWorksLT データベースのウィンドウの [インテリジェント パフォーマンス] セクションで [Query Performance Insight] アイコンを見つけます。
-
[設定のリセット] を選択します。
-
グラフの下のグリッドにあるクエリをを選択します。 以前に複数回実行したクエリが表示されない場合は、最大 2 から 5 分待ってから [最新の情報に更新] を選択します。
📝複数のクエリが一覧表示されている場合は、それぞれを選択して結果を確認します。 クエリごとに豊富な情報が入手できることに注意してください。
-
先ほど実行したクエリの場合は、合計時間が 1 分を超えており、約 3 万回実行されたことがわかります。
-
実行したクエリに対して [クエリの詳細] ページで SQL テキストを確認すると、[クエリの詳細] に SELECT ステートメントのみが含まれており、WHILE ループやその他のステートメントは含まれていないことがわかります。 この理由は、クエリ パフォーマンスの分析情報がクエリ ストアからのデータに依存しているからです。クエリ ストアでは、SELECT、INSERT、UPDATE、DELETE、MERGE、、BULK INSERT などのデータ操作言語 (DML) ステートメントのみを追跡する一方、データ定義言語 (DDL) ステートメントを無視します。
パフォーマンスに関するすべての問題が、1 回のクエリ実行による高い CPU 使用率に関連しているわけではありません。 このクエリの場合は、何千回も実行されており、その結果、CPU 使用率が高くなる可能性もあります。
リソースをクリーンアップする
Azure SQL Server を他の目的で使用していない場合は、このラボで作成したリソースをクリーンアップできます。
リソース グループを削除します
このラボの新しいリソース グループを作成した場合は、リソース グループを削除して、このラボで作成されたすべてのリソースを削除できます。
-
Azure portal で、左側のナビゲーション ペインから リソース グループ を選択するか、検索バーで リソース グループを検索して、結果からそのリソース グループを選択します。
-
このラボ用に作成したリソース グループに移動します。 リソース グループには、Azure SQL Server と、このラボで作成されたその他のリソースが含まれます。
-
トップ メニューから [リソース グループの削除] を選択します。
-
[リソース グループの削除] ダイアログで、リソース グループの名前を入力して確認した後、[削除] を選択します。
-
リソース グループが削除されるのを待ちます。
-
Azure Portal を閉じます。
ラボ リソースのみを削除する
このラボ用の新しいリソース グループを作成せず、リソース グループとその以前のリソースをそのまま残したい場合は、このラボで作成したリソースを削除できます。
-
Azure portal で、左側のナビゲーション ペインから リソース グループ を選択するか、検索バーで リソース グループを検索して、結果からそのリソース グループを選択します。
-
このラボ用に作成したリソース グループに移動します。 リソース グループには、Azure SQL Server と、このラボで作成されたその他のリソースが含まれます。
-
ラボで以前に指定した SQL Server 名のプレフィックスが付いたすべてのリソースを選択します。
-
トップ メニューから、削除を選択します。
-
[リソースの削除] ダイアログで、「delete」と入力し、[削除] を選択します。
-
[削除] をもう一度選択し、リソースの削除を確定します。
-
リソースが削除されるまで待ちます。
-
Azure Portal を閉じます。
LabFiles フォルダーを削除する
このラボ用に新しい LabFiles フォルダーを作成して、それが不要になった場合は、LabFiles フォルダーを削除して、このラボで作成されたすべてのファイルを削除できます。
- ラボ仮想マシン、または提供されていない場合はローカル コンピューターから、エクスプローラーを開き、 C:\ ドライブに移動します。
- LabFiles フォルダーを右クリックし、[削除] を選択します。
- [はい] を選択して、フォルダーの削除を確認します。
このラボは以上で完了です。
この演習では、Azure SQL Database のサーバー リソースを調べ、Query Performance Insight を使用して潜在的なクエリのパフォーマンス問題を特定する方法を学習しました。