2017-05-24 8 views
0

XML ExPLICITクエリ用にSQL 2005サーバーを実行しても、パフォーマンス上の問題がなく、非常にうまくいきました。マシン(Windows 2003サーバー)は残念ながら死んでしまったので、Windows 2012ボックスの緊急提供を行わなければなりませんでした。データベースファイルは2008r2と "仕事"に再接続されました。しかし、クエリは非常に遅いです。以前は.x回であったときにクエリごとに5秒。これにより、そのWebサイトの電源が使用できなくなります。 すべてのインデックスを再構築しましたが、すべてのマシンでDBCC FREEPROCCACHEを実行しましたが、顕著な効果はありませんでした。他に何を見ることができますか?私は2016年のSQLインスタンス上でそれらを実行することはできません。なぜなら、クエリの中には非ANSI *ジョインを使用するものがあるからです(私はそれは古いと言っていました!)。サーバー転送後のSQLパフォーマンスが悪い

+1

クエリプランを見ましたか? –

+0

すべてのDB統計、結果キャッシュ、その他のデータが失われて再構築する必要があるなど、多くの理由が考えられます。サーバーが使用されているために遅い改善が見られるか、それとも今はダウンしていますか?それを使用して、失われたデータが再び再構築されるにつれて高速化しているかどうかを確認することは価値があります。 – Galcoholic

+0

質問にはほとんど進んでいないので、少なくともクエリの例、関与するテーブル定義、クエリプランなどでは答えられません。また、おそらくサーバー上に競合があります。サーバが実際に必要とする容量と比較して、どの程度のメモリが必要ですか?おそらくディスクが遅いですか?同時リクエスト数は多く、CPUは1つだけですか?あなたが強調していないほど多くの変数。 –

答えて

0

以前にクエリが正常に実行されていた場合は、他に何が変更されたかを考慮してください。クエリプランナと実際の実行計画がこれを特定するのに役立ちます。

あなたが参加していると言ったら、あなたはどのくらい参加すると考えましたか?新しいマシンにデータベースにさらに多くのデータがある場合、結合はすぐに非常に高価になる可能性があります。これは、必要なデータを減らすことによって実行できます。データ処理が少なくてすむので、負荷が軽減されます。

クエリを実行する前に事前に計算できるものがありますか?

データを更新または削除すると、インデックスも再計算する必要があります(この場合はインデックスを無効にし、必要なデータをすべて挿入してから、再計算する必要があります)。 index)

XML処理については言及していませんが、for-xmlタグをマークしています。結合がXMLデータに対して実行される場合、Xqueryを使用してデータを取得すると、パフォーマンスが向上する可能性があります。

+0

クエリに関する追加情報やその動作については、もっと具体的なアドバイスを与えることができます:) – Martin

+0

なぜデータ量に変化があると思いますか?私が理解するように、同じデータベースファイルが別のサーバーに接続されていました。以前は同じ量のデータ、同じインデックス、同じXML処理で高速だったので、単純に「一般的な低速クエリ」であってはなりません。 – Galcoholic

+0

こんにちは - データの量に変更はありません - mdf&ldfファイルの壊れたサーバから新しいサーバへのまっすぐなコピーと再接続。 "xml explicit"は、SPからSQL出力を生成します。これは、(私がもはや使用していないものを使用して)データセットを作成してからオーソライズするためのTAG /親タイプの生成を使用して行われます。私は今このようにしないだろう! XMLデータへの結合はありません。すでに事前計算が行われています。私は遅いクエリの1つを取得し、同じで利用可能なSQL 2016インスタンスでそれを試してみます。非ANSI結合を持っていないものを見つける必要があります。* NOT *働くでしょう。 –

関連する問題