5

開始

SQL Server Express 2008 R2 を実行しています。ストアド プロシージャを使用して、同じテーブルに対して永続的に読み取り/書き込みを行う 10 人のユーザーがいます。彼らはこれを昼夜を問わず行います。

問題

データベースのサイズが大きくなると、ストアド プロシージャのパフォーマンスが低下します。データベースのサイズが約 200MB の場合、ストアド プロシージャの呼び出しには平均 10 ミリ秒が必要です。データベースのサイズが約 3GB の場合、同じ呼び出しには平均 200 ミリ秒が必要です。そのため、月に 1 回データベースをクリーンアップする必要があります。

一部のテーブルのインデックスの最適化は既に行っており、プラスの効果がありますが、問題はまだ存在します。

最後に、私は SQL Server の専門家ではありません。このパフォーマンスの問題を解決するためのヒントを教えてください。

4

6 に答える 6

8

SQL Server Express Editionの制限(1GBのメモリバッファプール、1つのソケットCPUのみが使用され、10GBのデータベースサイズ)が問題になる可能性はほとんどありません。アプリケーションの設計、不適切なクエリ、過度のロックの同時実行性、および不十分なインデックス作成が問題になる可能性が高くなります。リンクされた記事(特に最初の記事)には、ボトルネックを特定する方法に関する方法論が含まれています。

于 2012-05-23T15:00:19.623 に答える
2

これはおそらくプログラマーの間違いである可能性が最も高いです-あなたは単に次のいずれかを持っているように聞こえます:

  • 一部のテーブルのインデックスが適切ではありません。これは最適化ではありません-悪いインデックスはWebユーザーにとって壊れたHTMLのようなものです。インデックスがない場合は、基本的に使用されるはずのSQLを使用していないため、常に適切なインデックスを使用する必要があります。
  • RAMなどのハードウェアが不足しています。はい、10 GBのデータベースを管理できますが、ホットセット(常にアクセスされるサフ)が2 GBで、1 GBしかない場合は、必要以上に頻繁にディスクにヒットします。
  • ほとんどの人が適切なディスクレイアウトを取得することを気にしないので、遅いディスク、特に明白な問題。低速の200IOPSエンドユーザーディスクに対してsQLデータベースを実行すると、必要に応じて、SQLデータベースに多数のスピンドルまたはSSDが必要になります(最近の一般的なSSDには40.000 IOPSがあります)。

それが最後です-それに加えて、おそらく本当に悪いSQLです。典型的なフィルターエラー:somefomula(field)LIKE値。これは、「インデックスを忘れてください。テーブルスキャンを実行し、チェックする前にsomeformula(field)を計算してください」という意味です。

于 2012-05-23T15:08:46.873 に答える
1

まず、SQL Server Express はお客様の要求に最適なエディションではありません。Developer's Edition を入手してテストしてください。エンタープライズとまったく同じですが、「本番」で使用しない場合は無料です。

パフォーマンスについては、ここには非常に多くのことが関係しており、インデックスからパーティショニングまでを使用して改善できます。ヘルプを提供するには、さらに情報が必要です

于 2012-05-23T15:03:58.617 に答える
0

インデックスが不十分である可能性があります。データベースの設計が不十分である可能性があります。正規化が適用されない可能性があります。不要な列インデックス、クエリの実行に時間がかかる可能性があります。

于 2013-01-22T10:00:47.547 に答える
-3

SQLExpress はテスト目的で構築されており、パフォーマンスは Microsoft によって直接制限されています。本番環境で使用する場合は、SQL Server のライセンスを取得することをお勧めします。

こちらをご覧くださいSQL Express for production?

于 2012-05-23T14:59:20.470 に答える