Stored procedures 使用.NET core时,Oracle托管访问存储过程性能较慢
我正在使用.NET Core 2.0控制台应用程序和Oracle SQL Developer 19。我创建了一个存储过程,每次提取数据(~10000) 在Oracle Server上运行存储过程大约需要15秒,但是,当我尝试从.NET Core 2.0客户端获取数据时,需要1分钟:30秒。我正在使用Oracle.ManagedAccess.Core v2.19和动态参数Dapper 我不知道是什么原因造成了这次延误。我没有办法启用跟踪Stored procedures 使用.NET core时,Oracle托管访问存储过程性能较慢,stored-procedures,.net-core,oracle-sqldeveloper,Stored Procedures,.net Core,Oracle Sqldeveloper,我正在使用.NET Core 2.0控制台应用程序和Oracle SQL Developer 19。我创建了一个存储过程,每次提取数据(~10000) 在Oracle Server上运行存储过程大约需要15秒,但是,当我尝试从.NET Core 2.0客户端获取数据时,需要1分钟:30秒。我正在使用Oracle.ManagedAccess.Core v2.19和动态参数Dapper 我不知道是什么原因造成了这次延误。我没有办法启用跟踪 OracleDynamicParameters param
OracleDynamicParameters parameters = new OracleDynamicParameters();
parameters.Add("METADATA_CURSOR", dbType: OracleDbType.RefCursor, direction: System.Data.ParameterDirection.Output);
parameters.Add("p_batchsize", batchSize, dbType: OracleDbType.Int32, direction: System.Data.ParameterDirection.Input);
parameters.Add("p_offset", offset, dbType: OracleDbType.Int32, direction: System.Data.ParameterDirection.Input);
parameters.Add("p_IsIncrementalLoad", IsIncremental, dbType: OracleDbType.Int32, direction: System.Data.ParameterDirection.Input);
results = _baseRepository.ExecuteQuery<MetaDataDBModel>(Schema + "." + Constants.GetMetadataDetails, System.Data.CommandType.StoredProcedure, parameters).ToList();
OracleDynamicParameters参数=新的OracleDynamicParameters();
parameters.Add(“METADATA_CURSOR”,dbType:OracleDbType.RefCursor,direction:System.Data.ParameterDirection.Output);
parameters.Add(“p_batchsize”,batchsize,dbType:OracleDbType.Int32,direction:System.Data.ParameterDirection.Input);
parameters.Add(“p_offset”,offset,dbType:OracleDbType.Int32,direction:System.Data.ParameterDirection.Input);
parameters.Add(“p_IsIncrementalLoad”,IsIncremental,dbType:OracleDbType.Int32,direction:System.Data.ParameterDirection.Input);
结果=_baseRepository.ExecuteQuery(Schema+““+Constants.GetMetadataDetails,System.Data.CommandType.StoredProcess,parameters)。ToList();
我的BaseRepository执行方法
public IEnumerable<T> ExecuteQuery<T>(string query, CommandType commandType, OracleDynamicParameters parameters)
{
try
{
using (OracleConnection conn = new OracleConnection(_connectionString))
{
return conn.Query<T>(query, param: parameters, commandType: commandType);
}
}
catch (Exception ex)
{
//_log.Error(ex.Message);
throw;// new Exception(ex.Message);
}
return null;
}
公共IEnumerable ExecuteQuery(字符串查询、CommandType CommandType、OracleDynamicParameters参数)
{
尝试
{
使用(OracleConnection conn=新的OracleConnection(_connectionString))
{
返回conn.Query(Query,param:parameters,commandType:commandType);
}
}
捕获(例外情况除外)
{
//_日志错误(例如消息);
throw;//新异常(例如Message);
}
返回null;
}
我尝试设置语句缓存,但运气不佳
非常感谢您的帮助。先谢谢你