Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
infosense_devel
Creator II
Creator II

RAM issue

Scenario 1

We have current report which will let user compare yearly average of selected   travel time time for 2 years.
In order to achieve this in Qlikview, we need to load 8 qvds (for each quarter), which will roughly 35 GB.

Now imagine we have touched the RAM boundary by exactly fitting this need.

Now User-2 is trying to view different report which will need totally different data set and as we don't have free space in RAM.

What are the options by which QlikView will remove unwanted qvds loaded in memory ? 
Automated ? Configurable ?
Scenario 2

One  user is using Report-A which has reporting need as per scanerio-1.  i.e. 8 qvds (2 year all quarters) are loaded in memory. 

Another user is pulling different report which data set is nearly same (2 years all quarters) but data model and so end report is different.

How qlikview will manage this scenario ?
2 Replies
marcus_sommer

The server managed the RAM automatically within the RAM range of the working settings (min/max % of system RAM). As a general rule you will need the direct RAM footprint of your application + 10% for each user (are the users working very intensively within the application and/or there are objects with many data, for example pivots with many columns and rows you might need more then the 10%). In your case this would be 35 GB + 3.5 GB +3.5 GB = 42 GB as minimum. But you should have more ressources as reserve then if you haven't enough available RAM qlikview couldn't cache the user interactions properly and needs to be calculate some of the previous calculations new.

And this is only one application and you need to consider RAM for the OS and other running tasks - maybe a publisher respectively the distribution service (qvb.exe) runs on the same machine.

AFAIK your second scenario doubled the requirements then caching happens only within one application and not between several applications (maybe this is changed with one of the last releases but I'm not sure).

Another point is to look if the application couldn't be optimized (most often it could).

- Marcus

jonathandienst
Partner - Champion III
Partner - Champion III

Qlikview never loads qvd's into memory directly as your post implies. The load script for the Qlikview document (qvw file) loads the qvds (table files) into the qvw file to build the data model. The server loads the entire QV document file into memory and you cannot part load or unload any part of the qvw file. And as Marcus explains above, once the QVW file is loaded, QV will need additional RAM for state management, calculation and caching.

If you need to partially load the data from the qvd files, you will need to modify the qvw load or create a second qvw file that part loads the data. You can then control what is loaded by loading selected data from the QVDs according to the 'rules' in your load script.

The cache is only hit if the data set, the user selections and the expressions are identical (which makes sense if you think how a cache would work).

Logic will get you from a to b. Imagination will take you everywhere. - A Einstein