2017-05-31 39 views
0

これは簡単ではないようですが、適切なインデックス作成手法を使用してCXPACKETの待機をどのくらい避けることができますか?SQL Server - CXPACKET waitを回避する方法

+3

それはあまりにも広すぎです。 CXPACKETは、サーバーが並列処理を適切に利用していないことを意味します。これは過剰なスキャンによって引き起こされる可能性があります(インデックスはシークに向かうかもしれませんが)スキャンが問題になると、I/Oと実行時間はCXPACKET待機よりはるかに厳しいものになります。通常は、他の問題を解決したらCXPACKETの待機を心配します。その時までにインデックス作成はおそらくそのような待機を解決するものではありません。 CXPACKETの待ち時間には実際の問題がありますか?もしそうなら、あなたはインデックス作成が解決策であると思いますか? –

+0

@ JeroenMosert「インデックスがシークに変わるのを助けるかもしれない」と言ったとき、それは正確に何を指定しますか? –

+1

'SELECT * FROM [T] WHERE X = 1'。 Tに100万の行があり、 'X = 1 'の場合は正確に1つのみがあり、インデックスがないと、サーバが負荷の適切なバランスを取らないとCXPACKETが待機することを示す並列インデックススキャンが発生する可能性があります。インデックスを使用すると、すぐに待機していない行をすぐに取得するシークが取得されます。しかし、CXPACKET待機は明らかな症状ではありません。過度のI/Oと実行時間があります。 –

答えて

1

大きなスキャンを実行するクエリを調べる必要があります。これらのスキャンが索引の不足に起因する場合(十分な述部が選択されているが、サーバーがスキャンを実行している場合)、適切な索引を作成するスキャンを避けることができます。しかし、すべてのデータを読んでいると、毎晩、別のデータベース(別のサーバーから復元されたOLTP)のすべてのテーブルを読み込み、データを非正規化してデータベース全体を読み込んでいて、テーブルスキャンを完全に実行すると、 CXPACKETが待機するのは、並列処理をまったく無効にするオプションだけなので、ロードが遅くなるためです。だからそれだけで、サーバーはそれに問題はありません。我々はちょうど私たちのサーバーでトップ1としてこれを待っているが、それは完全に良いです

関連する問題