[問題] Sqlite不同Process能同時寫入嗎?

看板C_Sharp (C#)作者 (無傷大雅)時間5年前 (2019/08/10 15:07), 5年前編輯推噓2(206)
留言8則, 4人參與, 5年前最新討論串1/1
最近用C#在編寫Sqlite的小程式, 操作只有寫入。 有用到Transaction,但因為資料龐大, 希望開啟相同的程式對另外的資料做寫入, 可是只有第一個開啟db的程式能寫入, 第二支程式顯示錯誤是「database is locked.」 請問有解決的方法嗎? 謝謝。 函式庫是用System.Data.Sqlite -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.201.157 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1565420840.A.F40.html ※ 編輯: james999 (36.230.201.157 臺灣), 08/10/2019 15:40:05

08/10 16:08, 5年前 , 1F
https://sqlite.org/faq.html#q5 同時只能一個寫入
08/10 16:08, 1F

08/10 16:09, 5年前 , 2F
SQLite可以同時讀取 無法同時寫入 這是SQLite本身限制
08/10 16:09, 2F

08/10 16:12, 5年前 , 3F
基本上開多個程式去寫入同一個檔案並不會提升效能
08/10 16:12, 3F

08/10 16:12, 5年前 , 4F
你要做的是把Transaction(File lock)範圍縮小,只有真的要
08/10 16:12, 4F

08/10 16:13, 5年前 , 5F
寫入時才lock,其他處理盡量平行化才有用,不是弄同時寫入
08/10 16:13, 5F

08/10 22:48, 5年前 , 6F
不考慮batch寫入嗎?
08/10 22:48, 6F

08/18 14:16, 5年前 , 7F
insert要快 可以查BulkInsert
08/18 14:16, 7F

08/18 14:16, 5年前 , 8F
例如說這篇 http://bit.ly/2TFt7dv
08/18 14:16, 8F
文章代碼(AID): #1TJcqez0 (C_Sharp)
文章代碼(AID): #1TJcqez0 (C_Sharp)