Valentina CLIENT library provides not only read-only client-side cursor as do e.g. mySQL or PostgreSQL, but server-side cursor also, which can be in NoLocks, ReadOnly and ReadWrite modes.
While client-side cursor loads all result records into client computer RAM at single step, a server-side cursor loads one record only. This allows to use server-side cursors for huge SELECT results. But … if to make on such cursor a GUI grid table to display records, speed of display was not best, because each time GUI asks for other record to draw, server-side cursor have jump to VServer to load it.
Now we have cache for VCLIENT server-side cursors.
- Speed increased dramatically.
- VServer gets less job to do.
- Network traffic goes down
Developer can specify cache size of VCLIENT in the call Valentina.InitClient( inCacheSize ). VCLIENT do not allocate it at once, as VKERNEL do. This size specifies the maximal total size of cached buffers. We recommend to use 3-5Mb minimum and for desktop apps can be used even 50-100Mb. On default it is 10Mb.
Each server-side cursor keeps the list of cached records. When cursors dies it destroy cache buffers also.
Also exists list of usage history. If cache limit reached then older buffers are released.