簡體   English   中英

如何避免Arangodb集合鎖

[英]How to avoid arangodb collection locks

我啟用了跟蹤,並且看到以下消息在一秒鍾內被打印出大約10k次。

2016-03-12T18:14:56Z [31136]跟蹤[C:\\ b \\ ArangoDB-2.8.4 \\ arangod \\ Wal \\ CollectorThread.cpp:750] wal收集器無法獲取集合'39659811'的寫鎖

以下是收集的數字。

類型計數大小信息數據文件57 1.79 GB日志1 32 MB
壓實機0 0 B形狀文件0 0 B索引3 890.2 MB
類型計數信息形狀239個屬性77
未收集221145
參考文獻1
類型計數大小刪除信息Alive 4398864 930.54 MB-
無效的4487771 918.31 MB 0

ArangoDB有兩種用於收集的數據文件:

  • WAL文件(提前寫入日志); 如果創建了新的(-版本)文檔,則可以直接使用它們來確保盡快將數據持久地寫入磁盤。 該文件線性增長。
  • 收集文件; 每個集合一個; 這里有(較舊的)永久數據。

因此,如果您插入或更新文檔,它們將立即以滾動的WAL文件結尾。 這很好,因為旋轉的磁盤不喜歡搜索。 因此,無論將脈沖串寫入哪個WAL文件中,無論它們處於哪個集合中,它都可以線性寫入。磁盤可以通過在物理上狹窄的區域中對寫入操作進行分組來有效地執行其寫入脈沖串,而無需在文件之間跳轉(物理位置位於磁盤)。

文檔由引用它們的索引管理,無論它們在數據文件中還是在WAL文件中。 在ArangoDB重新啟動后,它也可以完美地工作。

現在到您要詢問的WAL-Collector線程。 該線程在這里用於將文檔從wal文件轉換為它們各自的收集文件。 由於您的查詢可能正在其他線程中處理這些文檔,因此它不能在無法確保它們空閑時移動它們。 因此,它需要嘗試獲取打算為其遷移文檔的收集鎖。 這可能並不總是可行,並且由於在開發ArangoDB期間可能會很有趣,因此它為此編寫了一個跟蹤日志條目。 但是,遲早應該找到這樣做的時間,並且一旦遷移了WAL文件的所有文檔,就可以刪除該文件。

由於這是ArangoDB- TL; DR的常規業務,因此,除非停止使用跟蹤日志級別,並且您早晚要清理WAL文件,否則您不必擔心,除非您停止使用跟蹤日志級別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM