WAL檔案的使用

2021-10-06 19:46:56 字數 968 閱讀 7855

資料中心有多種日誌模式,具體描述如下,本次主要分析wal日誌模式的配置和操作:

#define db_journal_delete        "delete"    //預設模式。在該模式下,在事務結束時,日誌檔案將被刪除

#define db_journal_truncate        "truncate"    //日誌檔案被階段為零位元組長度

#define db_journal_persist        "persist"    //日誌檔案被留在原地,但頭部被重寫,表明日誌不再有效

#define db_journal_memory        "memory"    //日誌記錄保留在記憶體中,而不是磁碟上

#define db_journal_off            "off"        //不保留任何日誌記錄

#define db_journal_wal            "wal"        //資料庫預寫日誌

1. 配置wal日誌模式(整個sqlite控制代碼只有一次日誌模式配置,經實測,只有第一次有效,後面再修改時已無效): 

sqlite3_exec(phandle, "pragma journal_mode = wal", null, 0, &err))

2. 配置wal日誌自動提交(資料庫wal檔案記錄頁到設定的個數,wal檔案資料將同步到本地檔案)

sqlite3_exec(phandle, "pragma wal_autocheckpoint=1000", null, 0, &err))

3. 手動觸發wal日誌提交

...4. 關閉wal

sqlite3_exec(db, "pragma journal_mode=delete;", null, 0, &zerrmsg);

風險:wal、shm緩衝區都是基於檔案,並非記憶體,這對嵌入式nandfash的讀寫次數有影響

具體分析參考:

介紹資料庫中的wal技術 預寫日誌 WAL 介紹

預寫日誌 wal,write ahead log 是關係型資料庫中用於實現事務性和永續性的一系列技術。簡單來說就是,做乙個操作之前先講這件事情記錄下來。為什麼要使用wal呢?比如你的備忘錄裡面有如下記錄 2015.12.25 理髮 2015.12.28 整容 2015.12.31 修指甲 別亂想,博...

SQLite中的WAL機制詳細介紹

一 什麼是wal?wal的全稱是write ahead logging,它是很多資料庫中用於實現原子事務的一種機制,sqlite在3.7.0版本引入了該特性。二 wal如何工作?在引入wal機制之前,sqlite使用rollback journal機制實現原子事務。rollback journal機...

事務的ACID特性 各特性由什麼保證 WAL是什麼

原子性 永續性 是由恢復系統保證的 一致性 隔離性 是由併發排程保證的 write ahead logging sql server中使用了wal write ahead logging 技術來保證事務日誌的acid特性,所有的修改 都先被寫入到日誌中,然後再被寫入到系統狀態中。如果沒有wal 乙個...