2012-06-18 18 views
2

如果我們首次調用某個xquery模塊需要一些時間。隨後的調用調用速度更快可能是因爲xquery模塊已解析並存在於模塊高速緩存中。xdmp:在MarkLogic中調用調用

考慮以下情形: -

HTTP Server1- xdmp:invoke('/a/sample.xqy') 
HTTP Server2 - xdmp:invoke('/a/sample.xqy') 

兩個應用服務器指向相同的模塊DB。

問題: -

  1. 後續調用爲什麼電話是更快?

  2. 但是,如果我們在diff應用服務器中調用相同的模塊,調用速度會很慢。對於緩存目的,這個xquery模塊會被視爲基於appserver的單獨對象嗎?

  3. MarkLogic如何決定哪個條目移出模塊緩存?

  4. 在調用xdmp:invoke後,MarkLogic將模塊保持在高速緩存狀態多久?

  5. 是否有任何ML配置來增加模塊緩存大小?

回答

3
  1. 緩存 - 但我想你知道嗎?
  2. 這聽起來像你已經證明了這一點。它是有道理的:不同的應用程序服務器可能有不同的配置,可能會影響評估:例如命名空間和模式,以及可能的輸出選項。因此,將應用程序服務器標識構建到緩存鍵中可能更簡單。
  3. 我相信這是一個LRU緩存。我不知道它有多大。
  4. 直到空間用盡或緩存條目被更新無效。
  5. 據我所知。
0

查詢是否觸及數據庫中的數據?如果是這樣,後續對同一查詢的調用可以在第二次調用時訪問E節點中的擴展樹緩存。

第二次呼叫要快多少?上次我測量它時,與大多數I/O解決方案的查找時間相比,查詢評估時間的差異很小。

0

1.緩存: - 有三種緩存 - 擴展樹,壓縮樹,list.Expanded樹存儲最近使用一個然後壓縮,然後列表。 ML文件非常好地解釋它。

2.如果第二個應用程序服務器在同一組中,那麼理想情況下它不應該花費更多時間。如果它在一個不同的組中,那麼這將需要時間。因爲緩存是在組級別完成的。

3.最近使用的將會是擴展樹chache,最近最少使用的將會在列表緩存中。哪些最近未使用的將從緩存中清除。

4.參考點的三階

5.是,進入管理 - >組 - >選擇您的團體--->配置選項卡。

+0

模塊高速緩存不同於樹高速緩存和列表高速緩存。模塊緩存緩存已解析的XQuery和XSLT,也可能是JavaScript。這與緩存模塊源不同,因爲解析源需要時間。 – mblakele

+0

爲了確認mblakele,模塊緩存(xquery,xslt,rewriters)是每個應用服務器的原因,每個應用服務器的環境都不相同,包括認證,模塊根,數據庫,模塊數據庫,模式數據庫,安全數據庫,重寫器和其他。在不同的情況下,相同的確切文件可能會「編譯」爲完全不同的東西。這說..什麼是'慢'? XQuery解析器速度相當快,但速度並不像沒有運行那麼快,但服務器經過優化以平衡整體性能。它有助於查看整體服務器性能。 – DALDEI