2010-12-14 16 views
0

突然、いくつかのテーブルに更新を加えると、以前よりも10倍も遅くなりました。根本的な原因と最適化を判断するための推奨事項は何ですか?特定の列のインデックスを作成すると更新が遅くなることがありますか?その他の推奨事項はありますか?更新時にSQLが非常に遅いのはなぜですか?

パフォーマンスに関する根本的な原因や指標を特定するプロセスには、推測よりも重要なことがあります。

パフォーマンスの問題の根本原因を特定するのに役立つFluent NHibernateには何かがありますか?

答えて

3

まず統計を更新してみてください。

次に、インデックスを調べて、必要なものだけを用意してください。追加のインデックスは挿入を最も確実に遅くすることができます。

次に、インデックスを再構築してみます。

スキーマ、クエリ、またはデータの量を知らなくても、それ以上のことは言い難いです。

+0

+1:十分でない場合、更新するとインデックスが再計算されるため、テーブルの行数が多いほどインデックスの再計算に要する時間が長くなります。たぶん、アーカイブは問題の解決方法になります:) – LaGrandMere

+0

"あなたの統計情報を更新する"とはどういう意味ですか?どのように私はインデックスを再構築するのですか – leora

+1

データベース内の 'すべての統計情報を更新する '(http://msdn.microsoft.com/en-us/library/ms187348.aspx)に' EXEC sp_updatestats'を実行することができます。 – RedFilter

0

データファイルの拡張設定を確認する価値があります。通常のファイルを増やすために多くの挿入を行うと、減速として現れることがあります。

1

原因...

  • あまりにも多くのインデックス

  • 記録

  • 更新クエリ

  • ロックのWHERE句の悪いインデックスcovarageの成長数複数の更新による問題(テーブルロック)

  • ハードウェアの問題(ディスクコントローラ、ネットワークなど)

1

そして相変わらず、SQLサーバー上のSQLプロファイラを実行すると、あなたのボトルネックが何であるかの点で丁度の良いアイデアを与えるだろう。テーブルがロック

2-最近実装されていない場合は

+0

は、SQLプロファイラを効果的に使用する方法についての良い文書です。 – leora

+0

@ooo - 本当に見たことはありませんが、これはかなりヒットしました。http://www.google.co.uk/search?sourceid=chrome&ie=UTF- 8&q = sql + server + profiler – Paddy

1

1 - 最初のチェックは

3 - データベースの更新がインデックスを再構築する必要があるかもしれませんがトリガされます。

4-一部の事前定義ジョブが処理中です。

5 ANY未知の理由

は実際に何が起こっているかを確認するために、いくつかのクエリanalzerツールを使用してください。

0

また、クラスタ化インデックスにデータを順不同で挿入しているかどうかを確認してください。

クラスタ化インデックスはフィールドの順番でデータを格納します。つまり、uniqueidentiferの場合は、各挿入にデータを並べ替えることになります。

クラスタ化インデックスは、シーケンシャルデータでよりうまく機能します。

関連する問題