簡體   English   中英

Aerospike聚集部分大小

[英]Aerospike aggregation portion size

我們使用“小型”僅限內存的Aerospike服務器來存儲最近一小時的網站分析。 最后一小時的數據大小約為10 Gb。

我們嘗試在Aerospike上從單獨的服務器(基於Java的客戶端)執行一些聚合查詢,類似這樣(在LUA中):

stream : aggregate( map(), complex_aggregate_function ) : reduce( simple_reduce_function )

根據文檔,所有聚合都在Aerospike節點上完成(在我們的例子中是單節點),並且在客戶端上減少。

事實證明,aggregate()函數只處理小批量數據,即10-16條記錄。 之后,聚合結果被發送到客戶端以由reduce()處理。

由於reduce()操作在客戶端上執行,這意味着服務器將向客戶端發送至少1/16大小的數據。 即數百兆字節的數據。 談論表現。

是否可以更改記錄流聚合的“緩沖區大小”或“隊列大小”或“任何大小”? 也就是說,可以“調整”Aerospike每個節點只調用一次reduce()函數嗎?

此問題有兩個方面 - 查詢批處理大小和查詢緩沖區大小。

查詢批處理大小確定查詢在單個批處理中返回的記錄數。 假設,如果您的查詢為您提供了1000條記錄且查詢批量大小為1000,則所有結果將在單個響應中返回。 如果查詢批處理大小為100,則需要10個批處理才能返回整個結果集。

有關詳細信息,請參閱http://www.aerospike.com/docs/operations/manage/queries/

同樣,您可以增加query-buf-size以增加緩沖區的大小。 較高的緩沖區大小將導致較少的批次計數。

暫無
暫無

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

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