私はこの巨大なシステムを昨日起動しました。同時接続数千人..私はSQL Server 2008と.NET 3.5(C#)を使用しています。データベースサーバーがビジー状態です。 DataContextを開く際に必要なアドバイス
今日私は、dbサーバが本当に遅くなっていることに気付きました(サーバマシンは本当に、このアプリケーションを簡単に10xのように扱うことができるので、私は自分の接続などを混乱させる必要があります)。
まず、私のビジネスクラスはそれぞれ1つのDataContextを作成しています。クラスレベルでは、次のようになります。
public class BusProduct : IDisposable
{
//DataContext
DBDataContext db = new DBDataContext();
//Variable of type DAL.Products (that will be set on application level)
public Products _attributes { get; set; }
//Dispose
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
}
/// Constructor
public BusProduct()
{
try
{
//New object
_attributes = new Product();
}
catch (Exception ex)
{
throw new Exception(ex.Message,ex);
}
}
public void Insert()
{
try
{
//Insert data set on _attributes
db.Products.InsertOnSubmit(_attributes);
db.SubmitChanges();
}
catch (Exception ex)
{
throw new Exception(ex.Message,ex);
}
}
}
あなたはこのことについてどう思いますか(クラスごとに1つのDataContext)?何をお勧めしますか?巨大なクラスにはいいですか?それはいいですか?
私はこのように、主に返品のためにIQueryable<Type>
のようにしたいと思います。 (リターンのこの種にアクセスしようとしたとき、私はメソッドごとに1 DataContext
を使用している場合、それはすでに破棄されます)
データベースを同時に使用している何千人ものユーザーがいる大規模なシステムを計画していたのですが、なぜデータベースのセパシストを雇ってデータベースとクエリを設計していませんでしたか?大規模な高性能データベース分野では長年の経験が必要なため、アプリケーションプログラマは、パフォーマンスの良いデータベースを作成する可能性はほとんどありません。 – HLGEM