问题:winform 调用nhibernate测试结果,为什么前几秒非常快,后边开始效率就明显下降了?
场景说明如下:
1、起了100个线程
for (int i = 0; i < 100;i++ ) /////30个线程也测试过
{
TestInsertThead instance1 = new TestInsertThead();
Thread t = new Thread(instance1.Go2);
t.Start();
Console.WriteLine("------------------>" + i);
}
2、每个线程中循环添加记录。
for (int i = 0; i < 10000; i++)
{
DataAccess da = new DataAccess();
Action doAction = delegate()
{
Userinfo newUser = new Userinfo();
//newUser.Id = Int32.Parse(textBoxX_id_userinfo.Text);
newUser.Imsi = "111111111111111";
newUser.Imei = "22222222222222";
da.Insert(newUser);
};
da.Transaction(doAction);//////这里代码实现如下面给出的。
Thread.Sleep(1);
}
===============Transaction======================
public void Transaction(Action action)
{
ITransaction transaction = session.BeginTransaction();
try
{
action();
transaction.Commit();
session.Close();
}
catch
{
transaction.Rollback();
session.Close();
throw;
}
}
===============session管理的机制说明======================
每次new一个DataAccess对象,都会factory.OpenSession();来打开一个session。
每次 da.Transaction都会关闭打开的这个session。