MySQL5.5.15とC#で開発しています。
10000個のテーブルに一つずつデータを書き込みたいと思っています。
MySqlCommand cmd = new MySqlCommand("insert ~", conn);
cmd.ExecuteNonQuery();
上記コードを10000回走らせています。
ですが、かなりの頻度で「接続が予期せず閉じられました」と途中で止まってしまいます。
それぞれテーブルが違うのでまとめてクエリを送信することもできず、またオートコミットをOFFにして100クエリずつcommitしましたが症状は改善されませんでした。
またたまに成功したとしても20秒ほどかかりとても遅いのではないかと思います。
どうすれば改善できますか。よろしくお願いします。
>20秒ほどかかりとても遅いのではないかと思います。
そんなことはありません。
1台のPCで1万個のテーブル相手に書き込みをしようとすると、分単位の時間はかかります。
最適化の必要があると思いますが、その前に確認です。
ループ処理は以下のようにopen/closeを繰り返していますか?
MySqlCommand cmd = new MySqlCommand("insert ~", conn); myConnection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close();
ご回答ありがとうございます。
一つのテーブルに10000レコードと、10000個のテーブルに一つずつでは全く違うのですね。
open/closeは最初と最後の一回のみです。