在数据库中执行许多插入时,我通常会有这样的代码:
using (var connection = new SqlConnection(connStr))
{
connection.Open();
foreach (var item in items)
{
var cmd = new SqlCommand("INSERT ...")
cmd.ExecuteNonQuery();
}
}
我现在想对数据库进行分片,因此需要根据插入的项目选择连接字符串。这将使我的代码运行得更像这样
foreach (var item in items)
{
connStr = GetConnectionString(item);
using (var connection = new SqlConnection(connStr))
{
connection.Open();
var cmd = new SqlCommand("INSERT ...")
cmd.ExecuteNonQuery();
}
}
这基本上意味着它正在为每个项目创建一个到数据库的新连接。这会起作用还是会为每个插入重新创建连接会导致可怕的开销?