だから-私たちは社内のデータベース、通常の種類のものを持っています:クライアント、電話、販売取引、クライアント契約/スキームを管理します。
これは、Access 2000フロントエンドおよびSQL Server 2000 Standardバックエンドです。単一サーバー、デュアルXeon 3.2GHz、2GB RAM、Windows Server 2003は、1日中約40%のCPU負荷を取得し、OS(HT)から見える4つのコアに分散しています。
バックエンドデータベースの設計は不十分であり、10年以上にわたって有機的に成長し、熟練していない個人によって維持されています。それはひどく正規化されており、いくつかの明らかな問題には、主キーまたはインデックスのない数万行のテーブルが含まれます。これらは、システムの最も頻繁に使用される一部のマルチテーブル結合でも頻繁に使用されます(例:全員のセカンドモニターに1日8時間常駐し、数秒ごとに大きな非効率的なクエリを実行するコールマネージャーアプリケーション)。
フロントエンドはあまり良くありません。それは典型的な数百のフォームの混乱、ネストされた保存されたクエリ、VBAコードでの不十分な記述の埋め込みSQL、数十の「奇癖」などです。「十分に」機能する1つのMDBに決着しました。現在、社内にAccessヘビーウェイトがないため(また、いずれも採用する予定もありません)、変更に関するポリシーはありません。
同社は現在ゆっくりと成長しており、クライアント、コールなどの数が増加し、同時ユーザー数がわずかに増加しています。また、最近ではパフォーマンスが著しく悪化しています(フォーム間を移動するのを待っている、リストにデータが入るのを待っているなど) )
Perfmonより:
- 1秒あたりのディスク転送:0〜30、平均4。
- 現在のディスクキューの長さ:1前後
SQL Serverのプロファイラーは、毎分数十万のクエリを確認します。クライアントのCPU使用率はほとんどゼロであり、サーバー側のクエリの実行を待機していることを示しています。DB Engine Tuning Advisorを使用してこのワークロードを配置し、テストバックアップにその提案を適用しましたが、実際にはそれほど大きな違いはありません。
ちなみに、100MBとギガビットイーサネットが混在しており、すべて1つのサブネット上にあり、2つのフロアに40人のユーザーがいます。
質問に。
私が見るように、この状況を解決/改善するための2つの選択肢があります。
- それを廃棄して、完全に新しいCRMシステム(特注または一部特注)に置き換えることができます
- ハードウェアをチャックすることで、このシステムの寿命を延ばすことができます。
ソフトウェアを交換するよりもはるかに少ないコストで、クレイジーなパフォーマンスを備えたIntel i7システムを構築できます。
最終的に新しいシステムが開発されると、このボックスでホストできるため、無駄なハードウェアはありません。新しいCRMシステムはどんどん消えていきます。少なくとも1年間はそうなるとは思いません。
特に自分がここにいる場合は、この状況についての考えをお寄せください。
ありがとう