データベースへの多くの挿入を実行するとき、私は通常次のようなコードを持っています:
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();
}
}
これは基本的に、アイテムごとにデータベースへの新しい接続を作成することを意味します。これは機能しますか、それとも挿入ごとに接続を再作成すると、ひどいオーバーヘッドが発生しますか?