質問編集履歴

3

質問事項のソースを改修したものを追加

2022/06/27 02:09

投稿

asral
asral

score10

test CHANGED
File without changes
test CHANGED
@@ -130,3 +130,70 @@
130
130
  windows10
131
131
  mysql5.6.20
132
132
 
133
+ ### 上記のソースから指摘されたところを変更したソース
134
+ ひとまずcatchは省いています。以下はINSERTのみですが、UPDATEも同じように直しました。
135
+ ```C#
136
+ private static async Task<bool> ExitPrintImageMain()
137
+ {
138
+ try
139
+ {
140
+ int listcnt = 0;
141
+
142
+ foreach (var v in TestList)
143
+ {
144
+ await UpdTest1TransactionAsync(listcnt);
145
+
146
+ await InsTest1TransactionAsync(listcnt);
147
+        listcnt = listcnt + 1;
148
+ }
149
+ return true;
150
+ }
151
+ }
152
+ ```
153
+ parameter2~5は省いています。実際はちゃんと記述してます。
154
+ ```C#
155
+ private static async Task InsTest1TransactionAsync(int listcnt)
156
+ {
157
+ try
158
+ {
159
+ DateTime dt = DateTime.Now;
160
+
161
+ parameter1.iTest_NO = listcnt;
162
+ parameter1.sTest_TIME = dt.ToString("yyyy/MM/dd HH:mm:ss")
163
+
164
+
165
+
166
+ parameter6.iTest_NO = listcnt;
167
+ parameter6.sTest_TIME = dt.ToString("yyyy/MM/dd HH:mm:ss")
168
+
169
+ await Tracsaction.Ins1Main();
170
+ }
171
+    }
172
+ ```
173
+ ```C#
174
+ private static bool Ins1Main()
175
+ {
176
+ MySqlCommand cmd = new MySqlCommand(SQL.ins1, cn);
177
+ try
178
+ {
179
+ cmd.Parameters1.Add(new MySqlParameter("i0", Program.parameter1.iTest_NO));
180
+ cmd.Parameters1.Add(new MySqlParameter("s1", Program.parameter1.sTest_TIME));
181
+ cmd.ExecuteNonQuery();
182
+ cmd.Parameters.Clear();
183
+
184
+
185
+
186
+ cmd = new MySqlCommand(SQL.ins6, cn);
187
+ cmd.Parameters6.Add(new MySqlParameter("i0", Program.parameter6.iTest_NO));
188
+ cmd.Parameters6.Add(new MySqlParameter("s1", Program.parameter6.sTest_TIME));
189
+ cmd.ExecuteNonQuery();
190
+ cmd.Parameters.Clear();
191
+
192
+ cmd.Transaction = cn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);
193
+ cmd.Transaction.Commit();
194
+ cmd.Connection.Close();
195
+ cmd.Dispose();
196
+ return true;
197
+ }
198
+ }
199
+ ```

2

前提を追加

2022/06/24 04:01

投稿

asral
asral

score10

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,8 @@
1
1
 
2
2
  ### 前提
3
+ Visual Studio 2019 
4
+ フレームワーク: .NET core 3.1
5
+ コンソールアプリケーション
3
6
 
4
7
  C#でTaskを使って複数のINSERTやUPDATEを繰り返すと、徐々に1件登録・更新を続けていくと少しずつ遅くなってしまいます。最初の数十件は1件目から2件目登録するのにそれほど時間はかかりませんが、数百件目となると1件処理するのに数秒かかるようになりました。
5
8
  登録や更新しているDBはLocalに構築しています。

1

await 追加

2022/06/24 03:55

投稿

asral
asral

score10

test CHANGED
File without changes
test CHANGED
@@ -77,7 +77,7 @@
77
77
  parameter1.iTest_NO = listcnt;
78
78
  parameter1.sTest_TIME = dt.ToString("yyyy/MM/dd HH:mm:ss")
79
79
 
80
- Tracsaction.Ins1Main();
80
+ await Tracsaction.Ins1Main();
81
81
  }
82
82
  catch (Exception e)
83
83
  {