
私は IT コンサルタントで、完全な IT インフラストラクチャをセットアップするプロジェクトをクライアントのために引き受けています。データベースの問題に直面しているクライアントがいます。彼は食品の小売販売業者で、データベースのサイズは 10 GB です。サーバーは IBM x3100 M4 Xeon クアッド コア プロセッサ、8 MB キャッシュ、16 GB RAM、300 GB SAS、OS は Windows Server 2008 Enterprise、SQL Server 2005 Standard です。クライアントは、データベースでの課金やその他のアクティビティのプロセス全体が遅すぎると不満を述べています。Server 2008 のリソース モニターを確認すると、SQL Server プロセスが数秒ごとに 70 - 80% に達し、メモリ使用率は 50 - 60%、ディスク使用率は 1 - 10 mbps の間で変動し続けています。
どこに問題があるのか、何かアイデアはありますか。
答え1
データベースがクエリに応答するのに遅すぎる場合は、データベース サーバーが不足しているか (クラスターの設定を検討する必要があるかもしれません)、またはデータベース サーバーに送信されるクエリの設計が適切で実行が遅いかのいずれかです。明らかに、これらは付加的な問題です。
あなたが設定した数値を考えると、データベース サーバーを追加したり、既存のサーバーを大幅にアップグレードしたりするのは悪い考えではないかもしれません。ディスク帯域幅がどの程度かはわかりませんが、ディスク アクセスが原因で遅い可能性は十分にあります。ファイバー チャネル接続の SAN や、より高性能なディスク、または異なる RAID レベルを使用するなど、速度をアップグレードする方法はありますが、ディスクが問題である場合は、通常、データベース サーバー (異なるディスクでバックアップ) を追加するのは悪い考えではありません。
可能であれば、データベースに対して実行されているクエリを確認し、一時テーブルが少なくなるように、または一時テーブルが小さくなるように最適化することを検討してください。たとえば、選択と投影 (SELECT ステートメント) は、結合と並べ替えの前に必ず実行する必要があります。