我有兩個應用程序對同一個SQL Server表執行某些操作。一個應用程序使用C#SqlBulkCopy
將大約二十萬條記錄導入到SQL Server表中,而另一個應用程序則從同一個SQL Server表中查詢數據。SQL Server暫停
我找到了這條信息 - 請檢查截圖。這張桌子有一億行。我該如何解決它?
我有兩個應用程序對同一個SQL Server表執行某些操作。一個應用程序使用C#SqlBulkCopy
將大約二十萬條記錄導入到SQL Server表中,而另一個應用程序則從同一個SQL Server表中查詢數據。SQL Server暫停
我找到了這條信息 - 請檢查截圖。這張桌子有一億行。我該如何解決它?
如果任何事務修改表和影響超過5000行,那麼SQL Server將升級從行級鎖鎖定爲獨佔表鎖。
因此,如果您的應用程序#1將大量的200,000行加載到表中,那麼在加載過程中該表將被獨佔鎖定。
因此,您的應用程序#2或任何其他客戶端將無法查詢該表,直到加載過程完成。
這是SQL Server部分的正常,記錄,預期行爲。
請確保您在營業時間內一次加載少於5000行的批量數據,或者在沒有人受到獨佔表鎖的負面影響後,再進行批量加載。
在這種情況下,「NOLOCK」暗示會有幫助嗎? – Nisarg
@NisargShah:我不這麼認爲,因爲整個桌子都被鎖定 –
如果您的應用程序#1將大量的200,000行加載到表中,那麼在加載過程中該表將被**獨佔鎖定**因此,您的應用程序#2將無法查詢該表,**直到加載過程完成。** –
所以我什麼都不能做?我認爲SqlBulkCopy wait_time = 4314076毫秒是慢。是SqlBulkCopy問題嗎? –