SQLite頁面管理

來源:互聯網
上載者:User

標籤:style   color   使用   sp   檔案   資料   bs   管理   as   

1 頁面管理器:是訪問本機資料庫和日誌的唯一模組(通過作業系統API)。它把隨機訪問系統或面向位元組的檔案系統抽象成資料庫檔案(基於頁的隨機訪問系統)。它定義了一套與檔案系統無關的介面來訪問資料庫檔案。B樹使用頁面管理模組的介面訪問資料庫,而非直接存取資料庫或記錄檔。B樹把資料庫檔案視為大小均勻的邏輯隊列。除記憶體資料庫外,一般的資料庫都是把資料庫檔案存在於磁碟上,用的時候讀入記憶體,操作之,有需要的話再寫回記憶體。一般情況下,資料庫檔案會比較大。有因為記憶體有限,所以在記憶體中只保持一小快的資料庫檔案,這塊記憶體叫做database cache或data buffer,在SQLite中叫做page cache。

對於每一個資料庫檔案,在檔案和緩衝之間移動頁面是頁面管理器的準系統。移動頁面對B+樹和其他高層模組是透明的。頁面管理器是檔案系統與這些高層模組的中間人,是的這些模組可以直接存取頁面內容,也負責把頁寫回資料庫檔案。他建立其了一個抽象,資料庫就是主存中的頁的隊列。頁面管理器也提供了其他功能:交易管理(實現ACID,並發的控制和恢複,原子的提交和復原),資料管理(協調資料庫檔案到緩衝區的頁的讀寫,檔案空間管理),日誌管理(向記錄檔寫入記錄),鎖管理(確保事務在訪問檔案之前已經獲得對資料庫檔案的相應的鎖)。總之,頁面管理實現了儲存的持久性和事務的原子性。

上層模組完全從低層級的鎖和日誌管理機制絕緣,他們不知道鎖和日誌的活動。B+樹只看到每個事務的層級,不管具體實現。頁管理器把一個事務拆分成鎖操作,日誌操作,對資料庫檔案的讀寫操作。B+樹以頁號請求一個頁,頁管理器返回一個指向已載入到緩衝區的頁的內容的指標。在對頁改動時,B+樹模組通知頁管理器在記錄檔裡儲存相應的資訊以應對可能的恢複,並且要獲得對相應資料庫檔案的鎖。B+樹在用完一個頁時通知頁管理器,如果頁面被更改,則寫迴文件。

 

2 頁面管理器介面結構:實現了名為Pager的資料結構,每個開啟的資料庫檔案對應著唯一一個Pager對象,資料庫檔案和Pager對象幾乎等價。B+樹想用一個資料庫檔案時,就建立一個Pager對象,使用對象的控制代碼對檔案進行操作。頁模組用控制代碼跟蹤關於檔案的鎖,記錄檔,資料庫的狀態,日誌狀態等。

 

3 緩衝管理:SQLitre為每個開啟的資料庫檔案維護一個單獨的頁緩衝區。如果一個線程兩次或多次開啟相同的檔案,頁管理器只會對第一個開啟調用建立單獨的頁緩衝區。記憶體資料庫記憶體資料庫不設計任何外部裝置,但是他們也被像本地檔案一樣對待,全部都在緩衝中。因此,B/B+樹用相同的介面來訪問資料庫。

頁緩衝區位於應用程式的記憶體空間。相同的頁也可能被作業系統所緩衝。當應用程式要讀任意檔案的內容時,作業系統先用自己緩衝的備份,再用應用程式的緩衝備份。SQLite的頁緩衝和區的組織和管理是獨立於作業系統的。頁面緩衝的管理是系統效能的關鍵。

3.1 緩衝區組織:為了加快搜尋緩衝速度,記憶體中快取項目都會有比較好的組織。SQLite用雜湊組織快取頁面,用頁槽儲存表中的頁。緩衝區是全相連的,即任何槽可以儲存任何頁面。雜湊表最初是空的,頁面管理器建立了新的槽並把其插入雜湊表中。一個緩衝區能儲存的槽有個最大值,而記憶體資料庫中無限制(只要作業系統允許應用程式的使用者空間增長)。

雜湊表中的每一頁都有一個PgHder類型的對象,接著是page image,接著是一些私人資料(B+樹用來儲存頁面具體控制資訊)。記憶體資料庫沒有記錄檔,所以他們的恢複資訊被記錄在記憶體對象中。指向這些對象的指標指向這些對象的指標在私人內容之後,這些指標被頁管理其使用。當頁管理器把頁調入緩衝區時,被初始化為零。在緩衝區的所有的頁面都可以通過雜湊表訪問,

 

SQLite頁面管理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.