儲存引擎位於arangodb資料庫的最底層。儲存引擎負責將文件儲存在磁碟上,在記憶體中儲存副本,提供索引和快取以加快查詢速度。
3.1版本之前,arangodb僅支援記憶體對映檔案(mmfiles)作為唯一的儲存引擎。從3.2之後,arangodb開始支援可插拔的儲存引擎。第二個支援的引擎是來自facebook的rocksdb。
mmfiles
rocksdb
預設可選的
資料集需要適合記憶體
盡可能多地處理磁碟上的資料
記憶體中的索引
記憶體熱設定,磁碟上的資料和索引
由於重建索引而導致重啟速度緩慢
快速啟動(不重建索引)
非易失性集合(僅在記憶體中,可選)
收集資料一直存在
集合級別鎖定(寫塊讀取)
併發讀取和寫入
部落格文章:comparing new rocksdb and mmfiles storage engines
rocksdb是乙個可嵌入的永續性key-value儲存。它是乙個日誌結構的資料庫,並針對快速儲存進行了優化。
mmfiles引擎針對資料放入主記憶體的用例進行了優化。它允許非常快速的併發讀取。但是,寫操作會阻塞讀操作,並且鎖定是在集合級別上的。索引始終在記憶體中,並在啟動時重建。這樣可以獲得更好的效能,但導致啟動時間更長。
rocksdb引擎針對大型資料集進行了優化,即使資料集比主記憶體大得多,也可以確保穩定的插入效能。索引始終儲存在磁碟上,但快取用於加速效能。rocksdb使用文件級別的鎖來允許併發寫入。寫入不會阻止讀取。讀取不會阻止寫入。
必須為整個伺服器/集群選擇引擎,不可以混合使用。事務處理和預寫日誌格式在各個引擎中是不同的,因此不能混合使用。
rocksdb是乙個非常靈活的引擎,可以配置為各種使用情況。
rocksdb的主要優點是
文件級鎖
支援大型資料集
永續性索引
注意事項
rocksdb允許併發寫入。但是,當寫入相同的文件時會產生寫入衝突。mmfiles引擎不會發生這種情況,因此將引擎切換為rocksdb要做好出現這種異常的準備。執行aql時可以專門鎖定集合。這將避免寫入衝突,但也阻止了併發寫入。
rocksdb是基於日誌結構的合併樹。下面是一些很好的介紹:
其基本思想是資料是按層次組織的,每個層次都比前乙個要素要大。新的資料將駐留在較小的級別,而舊的資料將下移到較大的級別。這允許在較長時間內支援高速插入。原則上不同的級別可能駐留在不同的儲存介質上。較小的放在快速的固態硬碟,大的級別就放在較大的機械硬碟。
rocksdb本身提供了許多不同的旋鈕來根據您的使用情況微調儲存引擎。arangodb支援使用下面的選項最常見的。
儲存引擎的效能報告可以在這裡找到:
arangodb選項
arangodb擁有乙個用於rocksdb中持久索引的快取。該快取的總大小通過該選項控制
--cache.size
rocksdb也有乙個儲存在磁碟上的塊快取。該快取的大小由該選項控制
--rocksdb.block-cache-size
arangodb預設在兩個快取之間平均分配可用記憶體。
arangodb為rocksdb中的各個級別選擇適合於通用應用程式的大小。
rocksdb日誌結構化的資料級別越來越大
mem: --
l0: --
l1: -- --
l2: -- -- -- --
...
新的或更新的文件首先儲存在記憶體中。如果這個memtable達到了給定的限制
--rocksdb.write-buffer-size
它將轉換為sst檔案並插入0級。
以下選項控制每個級別的大小和深度。
--rocksdb.num-levels n
將等級數限制為n.預設情況下,等於7,很少有理由改變這個。只有前乙個資料太多才會開啟乙個新的級別。
--rocksdb.max-bytes-for-level-base b
l0最多可以容納b位元組。
--rocksdb.max-bytes-for-level-multiplier m
每個級別最多是前乙個位元組的m倍。因此,l級的最大位元組數可以計算為
max-bytes-for-level-base * (max-bytes-for-level-multiplier ^ (l-1))
rocksdb對事務規模施加了限制。它經過優化,能夠非常有效地處理小型交易,但卻有效地限制了交易的總規模。
arangodb目前使用rocksdb的事務來實現arangodb事務處理。因此,在使用rocksdb引擎時,arangodb交易也有相同的限制。
我們將通過在未來版本的arangodb中引入分布式事務來改善這一點。這將允許處理大型交易作為一系列小型rocksdb交易,從而消除尺寸限制。
Mysql 儲存引擎之 MyISAM儲存引擎
myisam是預設儲存引擎。每個myisam在磁碟上儲存成三個檔案。frm檔案儲存表定義 myd檔案儲存資料 myi檔案儲存索引。要明確表示你想要用乙個myisam 請用engine表選項指出來 create table test myisam id int engine myisam 2 如下是m...
mysql儲存引擎 mysql儲存引擎簡介
精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...
mysql個儲存引擎 MySQL儲存引擎
mysql資料庫的體系架構如下圖所示 從上圖中可以看出,mysql主要分為以下幾個元件 連線池元件 管理服務和工具元件 sql介面元件 分析器元件 優化器元件 緩衝元件 外掛程式式儲存引擎 物理檔案 儲存引擎 其實就是指定表如何儲存資料,如何為儲存的資料建立索引以及如何更新 查詢資料等技術實現的方法...