Direct Discovery allows to fetch data from data source to QlikView or Qlik Sense during run-time, based on user interaction and selection. End-user side objects will update slower when Direct Discovery is enabled than with pure In-Memory data is used. The reason for performance difference is that processing data from source requires more time than processing data that already resides in memory. Analysis of Direct Discovery performance issues requires a controlled test scenario and a break-down of the time consumption when performance issue is observed. Performance Test Scenario
Direct Discovery data queries includes several parts of environment infrastructure and resources.
- Qlik server environment
- Connection used to fetch data
- Network infrastructure for data transfer
- Database server
Time consumption is affected by all parts above, when data is queried by Qlik server from data source.
Root cause of performance issues can only be identified by isolating the time consumption to the various process steps.
Break Down Data Flow
- Latency can occur in data source and network layer if current load is high due to other processes being active'
- Data request also involves connector, network connection and a database server, thus, performance measurement requires a good understanding of current load.
- Consider testing during low traffic hours, to enable fair comparison of good and bad results.
- Cached results can speed up queries at times when performance is good. For a fair measurement cleared cache is a good start point for benchmark and comparison.
- Consider restarting Qlik services prior to test to ensure cleared calculation cache, and clear database cache if feasible.
Qlik Direct Discovery executes a sequence of actions when data is fetched from data source during end-user interaction. Performance issues can originate from many different parts of this sequence, and a successful troubleshooting requires that the chain of events is traced to determine where time is mostly consumed.
Direct Discovery is executed from Qlik server side but a successful data request also involves a connector, network connection and a database server. The below table presents the common time consuming steps in a direct chart re-rendering and query execution.
|#||Database||Network||Qlik Sense / QlikView|
|1|| || ||Calculation Triggered|
|2|| || ||Calculation Cache Checked|
|3|| || ||Compose SQL Query|
|4|| ||Query To DB|| |
|5||Query Parsed|| || |
|6||Resultset Generated|| || |
|7|| ||Resultset Returned|| |
|8|| || ||Result Added To In-Memory Data|
|9|| || ||Calculation Performed|
|10|| || ||Result Sent To Client|