我有一个关于如何在对同一个表执行批量插入时处理sql查询的问题。如何在执行批量插入时发出选择查询
我有一个ASP.NET Web应用程序,它创建了大量使用nHibernate以批处理方式插入表的对象(可能是50000)。即使使用Nhibernate优化,这也需要花费两分钟的时间。我在隔离级别设置为读取提交的数据库事务中执行此操作。
在批处理过程中,Web应用程序中的客户端必须能够读取此表中以前创建的数据。但是,他们不应该读取未被公开的数据。我的问题是,如果我在选择查询中使用隔离级别“读取已提交”,它们会超时,因为它们正在等待批量插入作业完成。
有没有办法以这种方式查询数据库,以便查询运行速度快并返回表中的所有提交行而无需等待批量插入作业完成?我不想返回任何未提交的数据。
我测试过将隔离级别设置为“快照”,这似乎解决了我的问题,但它是最好的方法吗?
问候异想天开
您是否可以选择将批次拆分为几个较小的批次,以便它需要几秒钟而不是几分钟并独立提交? – 9000
不幸的是,在这种情况下,它必须是全部或没有。 – whimsical82