使用数据库中的存储过程获取大约200MB的大数据。以前使用DataTable.Load()方法在DataTable中填充此数据。但它导致性能问题,并且由于数据的大小,DataTable没有响应。
Using reader As DbDataReader = cmdHelper.ExecuteReader(CommandBehavior.CloseConnection)
Using rstResult As New DataTable()
rstResult.Locale = CultureInfo.InvariantCulture
rstResult.Load(reader)
Return rstResult
End Using
End Using
但是现在为了提高直接使用DataReader开始的性能,但由于DatReader是连接架构,因此数据库连接将一直打开,直到BusinessLogic完成。
Dim cnHelper As New DbConnectionHelper(_strDBConnection)
Dim cmdHelper As DbCommandHelper = cnHelper.CreateCommandHelper(strSP)
cmdHelper.Command.CommandType = CommandType.StoredProcedure
Dim reader As DbDataReader = cmdHelper.ExecuteReader(CommandBehavior.CloseConnection)
Return reader
所以,我不想使用DatReader,因为在连接BusineesLogic之前,DB Connections将一直打开。
在这种情况下,有没有其他方法可以在不使用DataReader的情况下提高性能?
答案 0 :(得分:0)
在这种情况下,还有其他方法可以改善性能 不使用DataReader?
由于DataReader是面向连接的,它将保持与数据库的连接打开,如果你无法负担不能加载DataTable / DataSet中的所有数据,那么我想其他选择是从块加载数据DataTable
中的数据库并对其进行处理。否则我认为还有其他选择。
答案 1 :(得分:0)