使用dapper时Oracle大容量插入运行缓慢



当我们按照文档中的指定使用Oracle执行批量插入时,它在10秒内传输了200个数据。我怎样才能更有效地做到这一点?

public async Task InsertAsync()
{
var items = GetItems();
using var connection = OpenOracleConnection();
var transaction = connection.BeginTransaction();
await connection.ExecuteAsync(@"insert into TableName
(Column1, Column2, Column3, Column4, Column5, Column6, Column7, Column8 ,Column9, Column10) VALUES 
(:p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9, :p10) ", items, transaction: transaction);
transaction.Commit();
}

private static IEnumerable<object> GetItems()
{
var list = new List<object>();
for (int i = 0; i < 200; i++)
{
list.Add(new
{
p1 = new Random().Next(0,999999),
p2 = 1,
p3 = "-",
p4 = "--",
p5 = "--",
p6 = "---",
p7 = "----",
p8 = DateTime.Now,
p9 = "-",
p10 = 1
});
}
return list;
}

您当前的代码并没有真正执行Bulk Insertion。它一次一次地插入你的列表中的每个项目

如果您真的想在Oracle中以最快的性能执行BulkInsert,请了解阵列绑定插入。

免责声明:我是Dapper Plus 项目的所有者

这个项目不是免费的,但可以让您轻松地在Oracle中进行批量插入(也可以在后台使用数组绑定(。

// Your mapping
DapperPlusManager.Entity<TEntity>().ToTable("TableName")
// ...code...
transaction.BulkInsert(items)

相关内容

  • 没有找到相关文章

最新更新