leveldb之資料庫損壞,修復

2022-02-04 09:44:23 字數 700 閱讀 2513

搜尋leveldb看到了乙個討論:

還在  地方貼出了**。

他的主要問題是:兩個執行緒 同時 進行 快速 開啟leveldb 操作 關閉leveldb。而且 還是 while(1){}迴圈級別 ,,,leveldb傷不起啊  太快了,導致leveldb可能有所損壞。

所以 leveldb程式開發方法應該是: 在程序 開始 開啟leveldb,然後各個執行緒 隨便使用。最後程式 完畢的時候 delete db。這個在程式 關閉時候 也會自動呼叫。當然手動呼叫更好了。

我還學到了

status=leveldb::destroydb(dbpath,option);

和 status=leveldb::repairdb(dbpath,option);

其中 dbpath="/tmp/test_db/"

leveldb::options option;

但是我也發現了,如果在程式main開始的時候(已經建立db物件了),使用destroydb,接下來還可以操作,delete db後,資料庫會被清空!

如果使用repairdb,然後後面對資料庫操作,在deletedb,leveldb會亂掉的。。。所以 兩個操作完畢後 立即 delete db;再建立db物件,再操作 才安全。

補充:譯文  leveldb:乙個快速輕量級的key-value儲存庫(譯)   ,原文:

這兄弟 翻譯的 比我好多了!!!!!!!很讚!

SQLite資料庫損壞修復

the database disk image is malformed 進入到sqlite3操作指定的資料庫 或者直接 sqlite3 e item.db 操作此資料庫 sqlite databases main e item.db sqlite tables 顯示列表 檢查資料庫是否損壞 sql...

資料庫表損壞的修復

用命令列訪問出現 開始時使用myisamchk r o home test test user.myi進行修復,出現錯誤 myisamchk error myisam sort buffer size is too small。df發現是mysql temp目錄太小,此錶太大。更改my.cnf檔案修...

SQLite資料庫損壞與修復

導致sqlite資料庫損壞的情況大致可歸結為4類 檔案覆蓋問題 檔案鎖問題 資料同步問題 記憶體問題 sqlite資料庫檔案被覆蓋是可能的,畢竟是乙個普通的磁碟檔案,意味著所有的程序都可以開啟和覆蓋,所以不可能完全避免檔案覆蓋的情況。1.多執行緒寫資料庫問題。sqlite資料庫是支援多程序併發讀寫,...