中央競馬の予想や購入したもののメモなどを書いて行こうかと。まあ、個人的なメモ的なブログです。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
SQL Server Expressでのコードファーストからのデータ登録では滅茶苦茶遅いSQLiteでした。調べると直ぐに分かるのはトランザクションを明示的に使う事での時短。
Using db ...
db.xxx.Add()
db.SaveChanges()
End Using
って感じを全体的にひっくるめて
Dim sqlBuilder As New SQLite.SQLiteConnectionStringBuilder()
'Set the properties for the data source.
sqlBuilder.DataSource = My.Settings.KSD_Data_Source
sqlBuilder.JournalMode = SQLite.SQLiteJournalModeEnum.Persist
sqlBuilder.SyncMode = SQLite.SynchronizationModes.Off
Using con As New SQLite.SQLiteConnection(sqlBuilder.ToString())
con.Open()
Using tran As SQLite.SQLiteTransaction = con.BeginTransaction()
Try
Using db As New KSD_DB
End Using
tran.Commit()
Catch ex As Exception
tran.Rollback()
End Try
End Using
End Using
に変更する必要があるっぽい。
2020.11.11 追記
上記の再内側で使っている
Using db as New KSD_DB
End Using
の部分はダメでした。多分このメソッド使うと既に自動でトランザクションとか諸々考慮されたものなのかもしれません。で、代わりにSQLiteCommandを使う方法でなければならない感じです。これってテーブルにカラムが多いと滅茶苦茶大変かと。今回テスト的に書いてみたコードは比較的カラム数が少ないテーブルでしたので昨晩チャチャっと書いておき、サーバメンテなんかの影響で今晩帰宅後に試しました。苦労した甲斐はありました。約4万件登録するのに2時間も掛かっていた処理が1分掛からずの45秒程度で完了とか^^ 嬉しかった。
が、その後Visual Studioがこのブログ書いている間に2回もハングしてるorz いや、別に単にソースを見ているだけの状態でハングとか、今迄経験なかったが、なんだろ? OS再起動して様子みるしかなさそうかも。