私のデータベースからのデータ検索のパフォーマンスが遅いことがわかったたびに。私はのSQLクエリのどの部分が問題を抱えているのか把握し、それを最適化しようとしており、のインデックスをテーブルに追加しようとしています。しかし、これは常に問題を解決するわけではありません。SQL Serverのパフォーマンスが低下する原因は何ですか?
私の質問は:SQLサーバーのパフォーマンスを改善するために、他のトリックは
ありますか?
SQLサーバーのパフォーマンスを悪化させる原因は何ですか?
私のデータベースからのデータ検索のパフォーマンスが遅いことがわかったたびに。私はのSQLクエリのどの部分が問題を抱えているのか把握し、それを最適化しようとしており、のインデックスをテーブルに追加しようとしています。しかし、これは常に問題を解決するわけではありません。SQL Serverのパフォーマンスが低下する原因は何ですか?
私の質問は:SQLサーバーのパフォーマンスを改善するために、他のトリックは
ありますか?
SQLサーバーのパフォーマンスを悪化させる原因は何ですか?
ああ他にもあるかもしれません。
データベースを初めて使用していて、データベース・エンジン・チューニング・アドバイザにアクセスできる場合は、データベースをヒューリスティックにチューニングできます。
基本的にSQLプロファイラでDBに対して実行されるSQLクエリを取得し、それをDETAにフィードします。 DETAは事実上(データを変更することなく)問合せを実行し、問合せをより良くするためにデータベースに欠落している情報(ビュー、索引、パーティション、統計など)を処理します。
これは、あなたのためにそれらを適用し、将来監視することができます。私はDETAが常に正しいことを理解していないことを想定すると言っているわけではありませんが、クエリーが何をしているか、どのくらいの時間を要しているか、どのようにDBを索引付けできるかを確認するには、適切に。
PS:プロジェクトの開始時に優れたDBAに投資して、優れた構造と索引付けを開始する方がはるかに優れています。しかし、それはあなたの現在のポジションではありません...
この問題を抱えている新しい開発者と話すとき、私は通常2つの問題のいずれかが原因であることを発見します。これら2つのルールに従えば、両方とも修正されます。
まず、不要なデータは取得しないでください。たとえば、ページングを行っている場合は、100行を戻してから、そのページに属するものを計算しないでください。格納されたprocはそれを把握して、必要なものだけを取り出します。
第2に、あなたがしない作業より速いものはありません。たとえば、私は、要求されたすべてのページでユーザーの完全な役割と権限が取得されたシステムで作業しました。これは、一部のユーザーにとっては100行でした。最初のリクエストでこれをセッション状態に保存してから、後続のリクエストでそれを使用しても、データベースからは有意義な重みがありました。
使用しているデータベースのパフォーマンスチューニングに関する良い本を得ることをお勧めします(これは非常にデータベース固有のものです)。これは非常に複雑なテーマであり、Web上の一般的なもの以外には本当に答えられません。
たとえば、非効率的なクエリは問題を引き起こす可能性があり、非効率的なクエリやそれを修正する方法がたくさんあります。
これは非常に広い質問です。そしてすでにたくさんの回答があります。それでも私は1つの重要な要因 - Page Split
を追加したいと思います。問題は、良いスプリットと悪いスプリットがあることです。悪い/厄介なページを識別するためのtransaction_log
拡張イベントを使用する方法を説明する良い記事は、次のとおり
を分割あなたが言及:
を、私はそれを最適化しようとすると、また、いくつかのインデックスを追加する
ただし、未使用の非クラスタ化インデックスを削除すると、パフォーマンスが向上し、トランザクションログが減少する場合があります。 Read Top Reasons for Log Performance Problems
Wait statistics, or please tell me where it hurtsパフォーマンス分析にwait statisticsを使用する方法を説明します。
に Performance Considerations - sqlmag.com
- 別々のテーブルを見てみましょう、パフォーマンスのためにいくつかの新鮮なアイデアを表示するには、( - ファイルグループの並列ディスクのI/O)別のディスクに結合します。
- 一意の値がほとんどない列の結合を避けてください。
JOIN
を理解するために、プロファイラを実行し、クエリが遅いところ、それはあなたを教えてみましょうAdvanced JOIN Techniques
拡張イベントのトラブルシューティング[拡張イベント待機情報イベントを使用して低速実行クエリをトラブルシューティングする](https://blogs.msdn.microsoft.com/sqlsakthi/2011/02/20/troubleshooting-slow-running-query-using-extended-events -wait-info-event /) – Lijo
をお読みください。 –
これもCWでなければなりません。言ってるだけ。 – Kredns
クローズとマークされた理由を知ることはできますか? – pang