簡體   English   中英

SQLite 與 Python 並發?

[英]SQLite Concurrency with Python?

假設我有一個巨大的 SQLite 文件(比如 500[MB])。 10個不同python實例可以同時訪問這個文件並更新它的不同記錄嗎? 注意,這里的重點是不同的記錄

例如,假設 SQLite 文件有1M行:

實例 1 將處理(並更新)行 0 - 100000

實例 2 將處理(並更新)行 100001 - 200000

…………………………………………………………………………………………………………

實例 10 將處理(並更新)行 900001 - 1000000


這意味着,每個python實例只會更新文件的唯一子集。 這會奏效嗎,還是我會有嚴重的誠信問題?

更新,感謝 André Caron。

可以這樣做,在 SQLite 中只有讀操作支持並發,因為整個數據庫都被鎖定在任何寫操作上。 SQLite 引擎在這種情況下會返回 SQLITE_BUSY 狀態(如果超過默認訪問超時)。 還要考慮到這在很大程度上取決於對給定的操作系統和文件系統實現的文件鎖定有多好。 一般來說,我不建議使用建議的解決方案,特別是考慮到數據庫文件非常大,但您可以嘗試。

最好使用基於服務器進程的數據庫(MySQL、PostgreSQL 等)來實現所需的應用程序行為。

有些。 任何時候只有一個實例可以寫入,這意味着並發寫入將被阻塞(請參閱SQLite 常見問題解答)。 你不會遇到完整性問題,但我不確定你是否真的會從並發中受益,盡管這取決於你寫了多少和你讀了多少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM