I would like to know in general, does Aerospike perform locking on the db when Aeropsike is performing aggregation, applying udfs.
If there is locking, how is the locking implemented, row level locking, or set level locking or namespace level locking.
The reason I am asking is because I am thinking of using Aerospike to aggregate a large db while making queries on it at the same time at a very high rate, I want to make sure the read performance is not greatly affected by the aggregation operations.
Any insights or experience is greatly appreciated!
The records are protected using Record lock. There is No global lock. Lock is held while Lua module is working with a particular record. A map or filter is called for each record. The record lock is released after the processing is finished. This gives level0 semantics.
There are tuning parameter which control how fast you want your aggregation to run. Even though the locking may not cause blocking but if aggregation, which process large number of record, if run with very fast could cause IO subsytem bottleneck which has ofcourse effect on how normal get/put behave.
Please check query / scan tuning parameter to details.