在 SQLite 中,他們已經在支持並行寫入的 HCTree 後端上工作

SQLite的

是一個符合 ACID 的關係數據庫管理系統,包含在一個用 C 編寫的相對較小的庫中

項目開發商 SQLite 已經開始測試一個實驗性的 HCtree 後端 它支持行級鎖定並在查詢處理中提供高級別的並行性。

關於他們工作的新後端,有人提到這個 旨在提高在客戶端-服務器系統中使用 SQLite 的效率 他們必須處理對數據庫的大量並發寫入請求。

最初使用的 b-tree 結構 在 SQLite 中存儲數據 它們不是為此類負載設計的。,這將 SQLite 限制為僅寫入一個流。 作為一項實驗,開發人員開始開發一種替代解決方案,該解決方案使用 HCtree 結構進行存儲,更適合併行化寫入操作。

HC-tree (hctree) 項目試圖開發一個新的數據庫後端,它改進了常規的 SQLite,如下所示:

改進的並發性: 使用 begin-concurrent 擴展改變了這一點,以便它可以在頁面級別使用樂觀鎖定並發執行。 這在一定程度上提高了並發性,但是頁級鎖定可以檢測邏輯上獨立的事務之間的衝突,COMMIT 操作仍然需要序列化。

複製支持: 股票 SQLite 支持 會話擴展,它允許將已提交事務的內容序列化以傳輸和應用到第二個數據庫。 Hctree 將其集成到數據庫後端,並添加了對將此類事務應用到領導者-跟隨者配置中的跟隨者數據庫的支持。 在這種情況下,與最初應用到領先數據庫的交易相比,從領先數據庫接收到的交易可以更快地應用,並具有更高的並發性,因為沒有 交易驗證。

消除數據庫大小限制: Stock SQLite 使用 32 位頁碼。 使用 4 KiB 的默認頁面大小,這將導致最大數據庫大小為 2^44 字節或 16 TiB。

要同時處理多個操作, HCtree日誌使用事務分離機制 它使用頁面級鎖,類似於MVCC(多版本包含控制),但使用基於鍵範圍和鍵範圍的事務控製而不是頁面集。

讀寫操作是相對於數據庫快照進行的,只有在事務完成後,快照的變化才會對主數據庫可見。

客戶可以使用三種操作來打開交易:

  • «開始«:交易不考慮其他客戶的訪問數據。 如果寫操作是在一個事務中執行的,那麼只有在執行期間沒有對數據庫進行其他寫操作的情況下,該事務才能被提交。
    «開始並發«:事務收集有關其他客戶端訪問的信息。 如果寫操作是在一個事務中執行的,那麼在創建快照後其他事務已經提交到數據庫的情況下,該事務可以被提交。
    «開始獨家«:開啟一個事務後,阻塞其他事務的操作,直到它完成。

HCtree支持主從復制,允許事務轉移到另一個數據庫,並保持從數據庫與主數據庫同步。

HCtree 還取消了數據庫大小限制:HCtree 使用 32 位標識符而不是 48 位數據頁標識符,這將最大數據庫大小從 16 tebibytes 增加到 1 exbibyte(百萬 tebibytes)。

HCtree 後端的 SQLite 性能預計至少與經典的單線程後端一樣好。 支持 HCtree 的 SQLite 客戶端將能夠訪問 HC-tree 數據庫和遺留 SQLite 數據庫。

來源: https://sqlite.org/


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。