我有一個關於如何在對同一個表執行批量插入時處理sql查詢的問題。如何在執行批量插入時發出選擇查詢
我有一個ASP.NET Web應用程序,它創建了大量使用nHibernate以批處理方式插入表的對象(可能是50000)。即使使用Nhibernate優化,這也需要花費兩分鐘的時間。我在隔離級別設置爲讀取提交的數據庫事務中執行此操作。
在批處理過程中,Web應用程序中的客戶端必須能夠讀取此表中以前創建的數據。但是,他們不應該讀取未被公開的數據。我的問題是,如果我在選擇查詢中使用隔離級別「讀取已提交」,它們會超時,因爲它們正在等待批量插入作業完成。
有沒有辦法以這種方式查詢數據庫,以便查詢運行速度快並返回表中的所有提交行而無需等待批量插入作業完成?我不想返回任何未提交的數據。
我測試過將隔離級別設置爲「快照」,這似乎解決了我的問題,但它是最好的方法嗎?
問候異想天開
您是否可以選擇將批次拆分爲幾個較小的批次,以便它需要幾秒鐘而不是幾分鐘並獨立提交? – 9000
不幸的是,在這種情況下,它必須是全部或沒有。 – whimsical82