看板 C_Sharp 關於我們 聯絡資訊
最近用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
ssccg: https://sqlite.org/faq.html#q5 同時只能一個寫入 08/10 16:08
feeya: SQLite可以同時讀取 無法同時寫入 這是SQLite本身限制 08/10 16:09
ssccg: 基本上開多個程式去寫入同一個檔案並不會提升效能 08/10 16:12
ssccg: 你要做的是把Transaction(File lock)範圍縮小,只有真的要 08/10 16:12
ssccg: 寫入時才lock,其他處理盡量平行化才有用,不是弄同時寫入 08/10 16:13
jass970991: 不考慮batch寫入嗎? 08/10 22:48
name2name2: insert要快 可以查BulkInsert 08/18 14:16
name2name2: 例如說這篇 http://bit.ly/2TFt7dv 08/18 14:16