getAll behaviour

classic Classic list List threaded Threaded
2 messages Options
Ariel Tubaltsev Ariel Tubaltsev
Reply | Threaded
Open this post in threaded view
|

getAll behaviour

Hi

I'm reading through forum threads, trying to grasp the getAll behaviour.
Also could be useful to know if there were any changes in recent versions.

Let's say I have a client running query like
cache.query(new ScanQuery<K,V>()).getAll() on cache in transactional mode
with pessimistic locking.

My understanding is that there is no pagination, whole query result will be
fetched and placed in collection.
On the server nodes, the whole query result will be fetched from off-heap
cache and placed in heap, then transmitted as a whole. On the server nodes,
locks will be taken in batches and released once data is loaded in-heap.

1. Is it correct?
2. When using cursor, what changes in terms of pagination, batch size, lock
acquisition?
3. Is there a way to control lock batch size?
4. getAll shouldn't block insert transaction, and shouldn't block more then
single batch of keys for updates and deletes?

Thank you
Ariel







--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
ilya.kasnacheev ilya.kasnacheev
Reply | Threaded
Open this post in threaded view
|

Re: getAll behaviour

Hello!

1. I don't think data will be held in heap at once on server nodes. You will not have pagination on client since you forfeit it by doing getAll(), but server nodes will still do this in memory-safe fashion.
2. I think server nodes will only hold locks very briefly. ScanQuery is fire and forget, so entries are released as soon as they are sent to client.
3. Why?
4. On ScanQuery it should not noticeably block anything.

Regards,
--
Ilya Kasnacheev


ср, 6 февр. 2019 г. в 04:45, Ariel Tubaltsev <[hidden email]>:
Hi

I'm reading through forum threads, trying to grasp the getAll behaviour.
Also could be useful to know if there were any changes in recent versions.

Let's say I have a client running query like
cache.query(new ScanQuery<K,V>()).getAll() on cache in transactional mode
with pessimistic locking.

My understanding is that there is no pagination, whole query result will be
fetched and placed in collection.
On the server nodes, the whole query result will be fetched from off-heap
cache and placed in heap, then transmitted as a whole. On the server nodes,
locks will be taken in batches and released once data is loaded in-heap.

1. Is it correct?
2. When using cursor, what changes in terms of pagination, batch size, lock
acquisition?
3. Is there a way to control lock batch size?
4. getAll shouldn't block insert transaction, and shouldn't block more then
single batch of keys for updates and deletes?

Thank you
Ariel







--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/