我們目前遇到在多用戶環境中使用SQLite進行數據庫鎖定的問題。由於日誌記錄已關閉以減少數據庫鎖定異常的數量,因此這些問題與常規數據庫畸形問題相結合。SQLite數據庫鎖定 - 兩行數據庫實時同步UPDATEs/INSERTs
我的同事目前正在實現一種同步算法,以允許用戶在本地SQLite數據庫上工作,並將該數據在瞬間傳輸到網絡上的主數據庫。
當本地行更改時,Sync標誌設置爲true。同步算法由每秒運行一次的定時器觸發,並由兩種方法組成:上傳和下載。下面提到的任何SQL命令都是使用String.Format構建的。
在上傳期間,會掃描本地數據庫中同步標誌爲真的行。像這樣的每一行都被更新或插入主數據庫(取決於是否可以使用相同的PK找到一行)。
在下載過程中,每個本地表都逐字段逐字段地與主數據庫中的相應表進行比較(兩個表都作爲數組結構加載到內存中以加快比較速度)。如果發現任何差異或者本地行丟失,則使用來自主數據庫的數據更新/插入本地行
忽略這樣一個明顯的事實,即這不能解決我們的鎖定/畸形問題,我的直覺告訴我這是一個可怕的想法,但我很難解釋這個問題。有沒有人可以提供一些理由,爲什麼這會是一個可怕的想法,或者是我忽視的一些積極因素。
什麼文件共享protocl? NFS? SMB(Windows)?而「journalling」,你的意思是'journal_mode'不是'WAL'或'OFF'? –
文件共享協議是SMB,並且沒有日誌記錄是'journal_mode = OFF' – pixelbadger