【问题标题】:Development Server Crashing on Large Transaction in Fluent NHibernateFluent NHibernate 中的大型事务导致开发服务器崩溃
【发布时间】:2011-02-12 12:38:40
【问题描述】:

我有大约 50,000 个单词的字典,每个单词与其他单词(同义词、反义词等)都有很多关系。当我尝试大约 1000 个单词的小样本时,它工作得很好。然而,当我完成整个数据集时,它很快就会使 ASP.NET 本地开发服务器崩溃。

List<Word> words;
...
using (var transaction = DatabaseSession.BeginTransaction())
{
    foreach (var word in words)
        MvcApplication.DatabaseSession.Save(word);
    transaction.Commit();
}

我在使用 C#/.NET 4、ASP.NET MVC3 和 Fluent NHibernate 的 Windows 7 x64 上。

更新:它实际上是在崩溃 WebDev 服务器,而不是数据库。

【问题讨论】:

  • 你能定义崩溃吗?你有例外吗?此外,SQLite 不是线程安全的,我不确定在多线程应用程序中使用它是否是个好主意。
  • 对,当我调用 Save 时,我从服务器收到堆栈溢出错误。我不想在生产中使用 SQLite;我尝试使用 MS SQL,它给了我同样的问题。

标签: c# sqlite fluent-nhibernate asp.net-mvc-3


【解决方案1】:

将ISession 更改为IStatelessSession。它应该有助于并提高性能。看看this 和this。

【讨论】:

  • 当我改为使用 IStatelessSession 时,我在调用 Insert 时收到 Word 表不存在的错误。我很确定该表存在,因为我在启动时将架构导出到数据库。
【解决方案2】:

我通过创建一个控制台应用程序来进行数据上传来修复它。我认为服务器因内存大小而阻塞。

【讨论】:

  • 使用 IStatelessSession 可以减少内存消耗
猜你喜欢
  • 2015-12-13
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多