1
我有一個C#應用程序需要向SQL Server數據庫添加大量文本(一行最多可以有1GB的文本)。所以,我有一些看起來像這樣的代碼:向數據庫高效地添加大量文本
SqlParameter param = command.Parameters.Add("@text", SqlDbType.NVarChar);
param.Value = new string(buffer);
文本以塊的形式添加,所以緩衝區是20 MB。我試圖通過重新使用緩衝區來減少內存壓力(而不是每次需要添加塊時執行新的字符[10000000])。我注意到的是,ADO.NET似乎在每次調用sproc時都會分配一個新的緩衝區。每次調用sproc時,我都會看到我的進程的工作集增加了近20 MB。現在
,你可能會認爲這是因爲「新的字符串(緩衝)」(我做了),但我得到了相同的行爲,當我做
param = command.Parameters.Add("@text", SqlDbType.Text, buffer.Length);
param.Value = buffer;
有什麼辦法來防止ADO.NET從每次向數據庫中添加一段文本時進行額外的內存分配?
謝謝!
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=522312 – Chris 2009-12-29 15:53:09