簡體   English   中英

如何在MarkLogic中查找XML文檔的大小

[英]how to find the XML document size in MarkLogic

我正在嘗試部分性能來計算MarkLogic中XML的文檔大小。 有人可以通過任何內置函數或任何查詢來幫助我,以計算出我的文檔的准確大小嗎? 我有一個像這樣的公式:

{string-length(string(data($doc))) idiv 2}

如果用“大小”表示您將XML文檔序列化為文本(“磁盤”) 將有多大,

 string-length(xdmp:quote( doc('file.xml') )) 

將使用默認的編碼和序列化選項為您提供字符數。
如果使用UTF8,則從1:1(字符到字節)到1:3不等,具體取決於Unicode字符的分布以及為xdmp:quote()指定的序列化選項與提取之前的類似格式之間的區別(或導出后)。 對於拉丁語言和默認設置,通常接近1:1 -為了獲得更高的准確性,您需要指定確切的序列化和編碼選項,然后將文檔保存到文件系統或轉換為二進制並采用二進制長度。 即使這樣,它仍然取決於文件系統和操作系統(塊大小,文本編碼等)。

如果按“大小”來表示,則表示該文件在marklogic中“使用”了多少磁盤/內存,可以通過對所有數據目錄中使用的磁盤空間進行快照,然后插入大量文檔並進行另一快照,然后划分來統計確定按#個文件。 取決於許多因素,例如索引設置,文檔之間的相似性,合並率和限制等,它的變化可能很大。

文檔以高度壓縮的形式存儲,通常比文本大小小得多,但是索引選項會增加總大小...兩者都很大程度上取決於不同文檔所共享的術語/令牌/子字符串的相似度。

如果按大小表示您要訪問的文檔將占用多少內存 ,那么它的可變性就更大,更不易測量。 對於文本內容很少或沒有文本的高度結構化文檔,其范圍可以從0x(完全由索引解決的查詢)到10x或更大。

我發現計算原始文檔大小的最簡單方法(在考慮索引之前)是將文檔轉換為二進制文件,然后使用xdmp:binary-size()

這是您如何做的一個例子

xdmp:binary-size(xdmp:unquote(xdmp:quote($doc),(),"format-binary")/binary())

暫無
暫無

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

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