web-dev-qa-db-ja.com

仮想環境でDB2リンクサーバーを使用したSQL Serverクエリが遅い

リンクサーバーを使用する遅いクエリに問題があります。私の環境を最初にリストアップしてみましょう、そして私は問題に行きます:

  • 仮想Windows 2003 R2サーバー(XenServer 6.1およびESXi 5での新規導入)
  • SQL Server 2005 SP3
  • IBM DB2 for iBMASQLを使用して作成されたリンクサーバーOLE DBプロバイダー enter image description here
  • クエリ自体は、今月のトランザクションを選択するwhere句を含むselectステートメントです。 enter image description here

では、問題自体:

  • 仮想マシンは4つのvCoreに設定されており、完了するまでに約35秒かかります
  • 仮想マシンは2つのvCoreに設定されているため、完了するまでに約20秒かかります
  • 仮想マシンは1 vCoresに設定されています。完了するまでに約5秒かかります

私はいじくり回してみました:

  • ネットワークカード設定
  • MAXDOP 1オプション
  • 実行計画を見る

これから何をしたらいいのか途方に暮れています。サーバーが頻繁に使用されるため、4つのvCoreを使用します。ただし、1つのvCoreのみを使用する場合と比較すると、クエリにかなり時間がかかります。

リンクサーバーが使用する仮想コアの量を制限する方法はありますか?

他に見ておくべきことはありますか?

ありがとう!

5
stanleykylee

Jon Seigelのおかげで、SQLのCPUアフィニティ設定に一部問題があるようです。

これをデプロイしたVMイメージからのSQLを使用して、ここにリストされている既知の問題を引き起こす(シナリオ#3):

自動アフィニティオプションを削除し、使用可能なすべてのCPUを使用するようにアフィニティマスクオプションを設定すると、問題が解決しました。

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'affinity mask', 15;
RECONFIGURE;
GO
sp_configure 'show advanced options', 0;
RECONFIGURE;
GO

sql server affinity GUI

このオプションを含むようにイメージを更新しました。この問題で助けてくれてありがとう。


このオプションはSQL Server 2012では非推奨であり、使用はお勧めしません。さらに、Windows 2000およびWindows 2003オペレーティングシステムでのプロセッサスレッド処理にも関連しています。

4
stanleykylee