日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

关闭SQLite3中的journal暂存档

發(fā)布時間:2023/12/10 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关闭SQLite3中的journal暂存档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

相信很多使用SQLite3當做數(shù)據(jù)庫的人都會一個現(xiàn)象,那就是當SQLite3有做寫入的動作時,SQLite3會自動產生一個名為"數(shù)據(jù)庫名稱-journal"的暫存檔。這是做什么用的呢?


答案是用來Rollback ,換句話說,就是當數(shù)據(jù)寫入數(shù)據(jù)庫有失敗動作時,透過journal檔案予以復原到未更動前(原始)數(shù)據(jù),來確保數(shù)據(jù)完整與一致性。如果在每次寫入的時間很長或頻繁的進行數(shù)據(jù)庫寫入情況下,因系統(tǒng)(主機)電力不穩(wěn)或突然斷電時,那么下次重新啟動,而journal檔案若存在,則在開啟SQLite數(shù)據(jù)庫時,若發(fā)現(xiàn)有journal檔案的存在,便會對數(shù)據(jù)庫做Rollback 動作(還原)(詳細內容:http://www.sqlite.org/atomiccommit.html)。但是有時候系統(tǒng)(主機)電力不穩(wěn)或突然斷電會導致journal檔案損毀,因而造成SQLite數(shù)據(jù)庫無法開啟[問題1]。必須(手動)刪除journal檔案,SQLite數(shù)據(jù)庫才能再度開啟。


目前所知的方法有兩種:

第一種方法:
在系統(tǒng)開機后第一次開啟或每一次使用SQLite數(shù)據(jù)庫時,先檢查是否已經存在journal檔案了,如果是則透過程序自動去刪除該journal檔案。
但是這有個問題,因為自動刪除該journal檔案,導致沒有Rollback (還原)作用,無法保障數(shù)據(jù)完整與一致性。缺點二:有時候會發(fā)生程序無法自動刪除(如:journal檔案嚴重損毀),而導致上面的問題(無法開啟數(shù)據(jù)庫)[問題1]再度發(fā)生。

?

第二種方法:
使用"PRAGMA journal_mode = OFF"指令,這個指令能關閉自動產生journal暫存檔動作。
但是如此一來當在寫入數(shù)據(jù)庫的過程,一旦發(fā)生意外狀況,將會導致SQLite數(shù)據(jù)庫無法保障數(shù)據(jù)完整與一致性。缺點二:journal_mode設定為OFF時,無法使用交易模式(Transaction)進行操作。

?

第二種方法的缺點二在如果需要使用交易模式(Transaction)進行操作時,可以透過"PRAGMA journal_mode = DELETE"指令,修改回原本的journal模式(journal_mode),就可以使用交易模式(Transaction)。

總結

以上是生活随笔為你收集整理的关闭SQLite3中的journal暂存档的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。