SQL でのパフォーマンス チューニング
SQLパフォーマンスのチューニング短距離走ではなくマラソンです。パフォーマンスの低下を防ぐには、長期にわたる一貫したチューニングが必要です。パフォーマンスが遅れ始めた瞬間にユーザーは気づくでしょう。
パフォーマンスのチューニングは、不満を抱いた顧客による悲劇を回避し、より良いユーザー エクスペリエンスを提供するのに役立ちます。この記事では、次のことを見ていきます。 SQLパフォーマンスのチューニング サーバーのパフォーマンスを向上させる際には、次のような点に注意する必要があります。
- SQL監視ツールを使用してパフォーマンスを監視する
- インデックスの改善
- SQL Serverのデッドロック
- クエリの実行時間の短縮
SQL パフォーマンス チューニングとは何ですか?
SQL パフォーマンス チューニングは次のプロセスです。SQL ステートメントのパフォーマンスの向上。 SQL ステートメントができるだけ高速に実行されるようにしたいと考えています。高速で効率的なステートメントは、使用するハードウェア リソースが少なくなり、パフォーマンスが向上します。対照的に、最適化されていない非効率なステートメントは完了までに時間がかかり、より多くの計算能力を消費します。
コンピューティング能力の使用が非効率的であると、データベースがユーザーのリクエストに応答するまでに時間がかかることになります。実際には、これは、ユーザーがインターフェイスを操作するたびに、データベースが必要な情報を見つけようとするため、応答時間が長くなることを意味します。ネットワーク管理者と開発者は定期的にパフォーマンス チューニングを使用して、データベースのパフォーマンスを向上させ、優れたユーザー エクスペリエンスを維持します。
SQL Server のパフォーマンス低下の原因は何ですか?
SQL サーバーの動作が遅くなる理由は数多くあります。遅いクエリからパフォーマンスのボトルネック、仮想化リソースの競合、ハードウェアの制限までの要因はすべて、パフォーマンス低下の原因となります。ただし、潜在的な原因のリストが多数あるため、サーバーが遅い根本原因を見つけるのは複雑です。
ほとんどの場合、パフォーマンスの低下は、ハードウェアの制限ではなく、不適切に作成されたクエリとリソースの非効率的な使用を行うインデックス作成に関連しています。残念ながら、多大な時間と労力を費やさなければ、問題の原因を突き止めるのは難しい場合があります。
SQL のパフォーマンス問題を発見する診断プロセスを高速化するには、パフォーマンス監視ツールを使用することをお勧めします。データベース モニターを使用すると、パフォーマンス低下の原因をより深く調査し、顧客により良いエンド ユーザー エクスペリエンスを提供できます。
SQL パフォーマンス モニターを使用してパフォーマンスを監視し、SQL ボトルネックを特定する
SolarWinds データベース パフォーマンス アナライザー (無料トライアル)
データベース監視ツールは、非効率の根本原因を正確に特定できるため、SQL パフォーマンスの管理に不可欠です。などの監視ツールSolarWinds データベース パフォーマンス アナライザーSQL ボトルネックなどの一般的な問題を特定し、問題の原因を強調するのに最適です。
SolarWinds データベース パフォーマンス アナライザー 14 日間の無料トライアルを開始
SQL ボトルネックは、データベースを管理する際に直面する最も広範な問題の 1 つです。ボトルネックが厄介なのは、ボトルネックがさまざまな方法で現れる可能性があることです。サーバーのパフォーマンスに影響を与える可能性のあるボトルネックには、次の 4 種類があります。メモリ、ディスク、CPU、 そしてその通信網自体。
複数のボトルネックが同時にアクティブになっている場合、ボトルネックの管理はさらに困難になります。たとえば、ディスク リソースとメモリが限られている場合、CPU 使用率も高くなる可能性があります。
SolarWinds Database Performance Analyzer は、アクティブなボトルネックの根本原因を特定するのに役立ちます。プラットフォームのSQLパフォーマンスアナライザーのデータを使用します待機タイプ、SQL文、活動など、リアルタイムのパフォーマンスを監視します。ボトルネックの背後にある待機タイプ/イベントを表示することもできます。
一般的なパフォーマンスのチューニングについては、ステートメントのチューニングに役立つさまざまなガイダンスもあります。たとえば、「最もパフォーマンスの悪い SQL ステートメントビュー。この情報を手元に置くことで、パフォーマンス チューニング戦略に具体的な変更を加え、エンドユーザーのエクスペリエンスを向上させることができます。
クエリ実行時間を短縮するためのチューニング
上で説明したように、クエリ実行時間SQL パフォーマンスを維持しようとする場合、これは重要な考慮事項です。クエリの実行時間が長くなるほど、リクエストを処理するためにハードウェアが使用するリソースが増えます。クエリの実行時間を短縮すると、ハードウェアをより多く活用できるようになり、データベースのパフォーマンスが向上します。
クエリの実行時間を増加させる主な要因は次の 3 つです。テーブルサイズ、結合します、 そして集合体。クエリが行数が多すぎるテーブルと対話する必要がある場合、ソフトウェアはそのクエリを処理するためにより多くの作業を行う必要があります。同様に、あなたのクエリの場合、結合します複数のテーブルを一緒に使用すると、パフォーマンスに影響します。同様に、集計を使用して結果を生成するクエリでも、より多くのリソースが必要になります。
他の多くのユーザーが同時にクエリを実行している場合、クエリの実行時間も長くなる可能性があることに注意することが重要です。すべてのクエリはハードウェア リソースを消費します。その結果、データベースが処理しようとするクエリが増えるほど、実行時間は遅くなります。
パフォーマンスを向上させ、クエリの実行時間を短縮したい場合、テーブル サイズを削減することが最も簡単な方法の 1 つです。同様に、時間枠をクエリするときは、ウィンドウをできるだけ狭くしてください。たとえば、一定期間にわたるデータベース データを測定する必要がある場合は、ハードウェアがそれほど多くのデータを処理する必要がないように、24 時間などの短い期間を選択します。
もう一つできることは、メモリをアップグレードすることです。大規模なデータベースを管理するために利用できるコンピューティング リソースがない場合、チューニングだけでは良好なパフォーマンスを実現するのに十分ではありません。メモリをアップグレードすると、より多くのリソースを確保できるようになります。
関連記事: ベスト SQL クエリ ビルダー
SQL サーバーのデッドロック
デッドロックは、ネットワーク管理者と開発者が管理しなければならないもう 1 つのパフォーマンスの問題です。デッドロックが発生している場所2 つのプロセスがリソースへのアクセスを求めて競合しています。 2 つのプロセスは相互にブロックするため、どちらもリソースにアクセスできません。言い換えれば、デッドロックはアプリケーション コードによって引き起こされる循環的な依存関係です。
サーバーのデッドロックを解消するには、管理者はプロセスの 1 つを終了する必要があります。 SQL Server には、ロックマネージャー5 秒ごとにデッドロックを自動的に検索します。
SQL Server はデッドロックを検出すると、シャットダウンするトランザクションを選択します。トランザクションの 1 つをシャットダウンするとデッドロックが解除され、他のプロセスが最初にブロックされていたリソースにアクセスできるようになります。
SQL Server は、デッドロックの優先順位に基づいてシャットダウンするプロセスを選択します。デッドロック優先度は、ユーザーが次のコマンドを使用して設定できます。
DEADLOCK_PRIORITY を低く設定します。
4 つの優先レベルがあります。低い、普通、高い、<数値> 。 LOW の値は -5、NORMAL の値は 0、HIGH の値は 5 です。
SQL サーバーは、最も低いデッドロック優先度レベルでプロセスを終了します。したがって、プロセスに低い優先順位を割り当てるために LOW コマンドを入力し、他のプロセスの優先順位が「Normal」または「HIGH」である場合、優先順位が低いプロセスは終了します。
デッドロックの解決は、デッドロックの優先順位セクションをはるかに超えることに注意することが重要です。デッドロックは、解決するのが非常に複雑な問題になる可能性があります (特に、開発者の助けを借りてアプリケーション コードを検討する必要がある場合)。
インデックスの改善
インデックスは、クエリの効率を高めるために自由に使える便利なツールです。インデックスは、データベースから情報をより速く取得するために使用できるデータ構造です。インデックスを使用してパフォーマンスを向上するには、テーブル内で多くのインデックスを使用し、頻繁に更新されるインデックスを避け、非クラスター化インデックスクエリの実行時間を短縮します。
インデックス設計のプロセスを支援するために、次を使用できます。SQLプロファイラーパフォーマンスが標準以下のクエリを特定します。SQLプロファイラクエリを完了するまでに必要な読み取りおよび書き込み操作の数と、クエリが完了するまでにかかる時間を示します。リモート コンピューターにプロファイラーをロードし、完了までに時間がかかるクエリを見つけます。これらのクエリは、実行時間が短縮されるまで調整する必要があるものになります。
あるいは、インデックスチューニングウィザード使用するインデックスを推奨します。チューニングウィザードは、達成したいことに基づいて推奨事項を提供する SQL 用のソフトウェア ウィザードです。で取得した出力データを使用できます。SQLプロファイラ提供インデックスチューニングウィザード監視する情報が含まれています。クエリの実行時間を監視し、非効率な操作がないか常に注意してください。
SQL チューニングを 1 日少し行うだけで、パフォーマンスの低下を防ぐことができます
ユーザーのパフォーマンスに対する期待は、これまで以上に厳しくなっています。わずかな遅延だけで、ユーザーを丘まで走らせることができます。積極的に遅延を排除し、現代のユーザーが求める応答性の高いエクスペリエンスを提供するには、SQL データベースのチューニングが必要です。
SQL パフォーマンスの監視は継続的なプロセスですが、最初に行う最良の方法の 1 つは、データベース監視プラットフォーム。 データベース監視ソフトウェア 可視性が向上し、改善すべき特定の問題の方向性が示されます。
それ以降、クエリのパフォーマンスを向上させる方法は 101 通りあります。 SQL を初めて使用する場合は、幻滅せず、一度に 1 つずつ小さな改善を行うことに集中してください。テーブル サイズを減らすなどの基本的なことから始めて自信を深めれば、さらに複雑な手順に進むことができます。
SQL パフォーマンス チューニングに関するよくある質問
SQL でパフォーマンス チューニングを行うにはどうすればよいでしょうか?
SQL パフォーマンス チューニングに関する 4 つのヒントを次に示します。
- SQL監視ツールを使用してパフォーマンスを監視する
- インデックスを改善する
- リソースのデッドロックを防ぐ
- クエリの実行時間を短縮する
SQL クエリの実行を高速化するにはどうすればよいですか?
SQL クエリの実行を高速化するには、次の 4 つの手順を試してください。
- サーバーメモリを拡張する
- パーティションテーブル
- 外部結合を削除する
- 結合を再編成して、最初にほとんどのレコードを除外します
- 結合がインデックスにヒットすることを確認する
- 列リストからワイルドカードを削除する
データベースのパフォーマンスチューニングとは何ですか?
データベースのパフォーマンス チューニングには、インデックス、ビュー、テーブルの正規化を調べることによるデータベース オブジェクトの改善が含まれます。 SQL クエリは、インデックスなどのデータベース構造を最適に利用する方法で作成する必要があります。