A faster way to copy SQLite databases between computers – alexwlchan
LinkA faster way to copy SQLite databases between computershttps://example.com/faster-sqlite-copy
📌 Summary:
本文介紹了一種更快速且穩定地在不同電腦間傳輸 SQLite 資料庫的方法。作者面臨傳統使用 rsync 直接複製 SQLite 資料庫的瓶頸,特別是在資料庫規模增大且含有多個索引時,複製時間顯著增加且容易出錯。解決方案是利用 SQLite 的 .dump 指令將資料庫導出為包含建表及插入指令的純文字檔,該檔案大小往往比原始資料庫小許多,主要因為索引只以指令形式存在,不重複儲存數據。再將這個文字檔壓縮成 gzip 檔案,透過 ssh 傳輸到本機後解壓,再依序執行文字檔內容重建資料庫。這樣不僅減少了傳輸檔案大小,也避免了傳輸過程中資料庫被異動導致損壞的問題,進而提升傳輸速度與穩定性。最後作者分享實際例子,一個 3.4GB 的資料庫壓縮後文字檔僅約 240MB,縮小約 14 倍,顯著節省傳輸時間及資源。
🎯 Key Points:
→ ★ 問題描述:隨著 SQLite 資料庫及索引規模增大,使用 rsync 複製資料庫耗時且容易出錯。
→ ★ 主要瓶頸:索引會額外複製重複資料,導致檔案體積膨脹。
→ ★ 解決方案:利用 sqlite3 的 .dump 指令將資料庫轉成 SQL 指令的純文字檔,內容包含建表、插入資料以及索引建立語法。
→ ★ 優點:純文字檔大小常小於原始資料庫,gzip 壓縮後更為顯著,減少資料重複複製。
→ ★ 實務流程:① 在遠端伺服器透過 ssh 指令產生壓縮的純文字檔,② 使用 rsync 傳輸該檔案到本地,③ 解壓縮並利用 sqlite3 將 SQL 指令匯入重建資料庫,④ 清理暫存文字檔。
→ ★ 穩定性提升:先產生純文字轉存版本,避免在傳輸過程中資料庫被更新造成不一致導致打開錯誤。
→ ★ 範例數據:3.4GB 的 SQLite 資料庫,轉 dump 後文字檔約 1.3GB,用 gzip 壓縮後約 240MB,縮減近 14 倍。
→ ★ 實務價值:大量或多索引的 SQLite 資料庫能透過此方法更有效率且安全地傳輸與備份。
🔖 Keywords:
#SQLite #資料庫備份 #資料庫傳輸 #gzip壓縮 #rsync