SQLite 開發人員開發支援並行寫入的 HC-tree 後端

SQLite 專案開發人員已開始測試實驗性 HCtree 後端,該後端支援行級鎖定並在處理查詢時提供高階的並行化。 新後端旨在提高在必須處理大量並發資料庫寫入請求的客戶端-伺服器系統中使用 SQLite 的效率。

SQLite 本身用於儲存資料的 b 樹結構並不是為這種類型的負載而設計的,這限制了 SQLite 只能寫入一個執行緒。 作為實驗,開發人員開始開發一種替代解決方案,使用 HC-tree 結構進行存儲,這種結構更適合併行化寫入操作。

為了允許多個操作並發運行,HCtree 記錄使用事務分區機制,該機制使用頁級鎖定,類似於 MVCC(多版本並發控制),但使用基於鍵和鍵範圍而不是頁集的事務檢查。 讀取和寫入操作是與資料庫快照結合執行的,只有在事務完成後,對其所做的更改才在主資料庫中可見。

客戶端可以使用三種開放交易操作:

  • 「BEGIN」-交易不考慮其他客戶端的存取資料。 如果在交易內執行寫入操作,則只有在執行期間資料庫中沒有其他寫入操作時才能提交該交易。
  • 「開始並發」-事務收集有關其他用戶端存取的資訊。 如果在事務內執行寫入操作,並且自建立快照以來資料庫中已提交其他事務,則可以提交該事務。
  • 「BEGIN EXCLUSIVE」 - 開啟一個事務後,它會阻止其他事務的操作,直到它完成。

HCtree 支援主從複製,讓您可以將交易遷移到另一個資料庫並使輔助資料庫與主資料庫保持同步。 HCtree 還消除了對資料庫大小的限制 - HCtree 使用 32 位元資料頁標識符而不是 48 位元資料頁標識符,這將最大資料庫大小從 16 tebibytes 增加到 1 exbibyte(百萬 tebibytes)。 預計帶有HCtree後端的SQLite的效能將不低於經典的單線程後端。 支援 HCtree 的 SQLite 用戶端將能夠存取基於 HC-tree 的資料庫和舊版 SQLite 資料庫。

來源: opennet.ru

添加評論