You are viewing limited content. For full access, please sign in.

Question

Question

Forms Data Lookup Performance (Multiple Lookups)

asked on November 21, 2024

We had a lot of grief troubleshooting a complex form so I'm posting this here in case someone else hits the same issue. There's not really a problem to solve, I have to document it for our project so it seemed useful to share.

 

Context:

  • We were testing converting a complex report to see if we could use forms to streamline the approval process.
  • Replicating the original report in forms resulted in a complex form with a large (19) number of lookups, as the original template used multiple separate dynamically generated tables.
  • The total number of records wasn't especially high (~200).
  • As the form was being built out performance quickly started to degrade, with initial page load times exceeding ten seconds at best or  25-30 at worst.
  • The data load in was visible to the user as they had time to browse before the data loaded in.
  • Laserfiche Forms Professional Version 11.0.2311.50585

  • Modern Form Designer

 

Issue:

  • Our troubleshooting included: increasing server resources, checking the underlying SQL performance. No significant improvements were made.
  • To isolate the issue a new blank form was created, and the performance tested (averaged load times).
  • After each testing iteration an additional lookup was added.
  • Performance degraded roughly linearly with each lookup.

 

Observations:

  • The lookups fire in an apparently random order (I don't think this matters, it just confounded out troubleshooting).
  • The lookups run sequentially.
  • The first lookup averages ~50ms
  • Each subsequent lookup starts after the previous one completes and takes ~500ms.
  • As a result lookup 1 takes ~50ms, lookup 3 takes ~1050ms, lookup 10 takes ~4550ms (I've attached a table out to 20 lookups).

 

Conclusion:

  • These results are consistent enough that it doesn't look like a bug, just how the software handles data lookups.
  • Forms with a large number of lookups are going to perform poorly. This will need to be accommodated in form / process design.

 


Approximate expected lookup load times:

1 0

Replies

replied on November 21, 2024

Hi Matt,

It is a known issue that Forms could not process multiple lookup requests from one session in parallel. That is, if you fire multiple lookup requests at the same time on a single form, although the requests show as started in frontend, they have to be processed one by one in backend server.

We have a backlog item for this (#68671) but it's not in our plan for recent release.

0 0
replied on November 22, 2024

Good to know, thank you. We're just designing around it.

0 0
replied on November 26, 2024

I appreciate the thorough breakdown of the testing you gave. Could you provide some insight into the types of lookups you're running? Are all 19 lookups chained? Are you able to combine any lookups using SQL views or stored procedures?

0 0
replied on December 5, 2024 Show version history

Hi, Zachary:

The form has 19 lookups which query 1 table and 2 views.

The table look ups auto-fill drop-downs and text fields based on user selections from other drop-down fields. There are three table lookups on a main ‘Start’ tab.

The remainder of the lookups are on another tab. These use views, matching one column value and auto-filling two values in a table. The lookups are essentially the same for each table with only the match value changing as the category to be matched changes. The same view column values are returned each time, just from a different category.

I created both views to make the lookup much simpler as the results needed spanned more than one table.

(I've attached some screenshots of what those tables look like, both before and after the lookup. The number of rows returned varies, from just a few to about 30 or so. There are about 16 tables on the form page.)

I did experiment a bit with a stored procedure but didn't notice any change in response time.

Having said that, I didn't replace each lookup with a stored procedure, for example, or mix the lookups with stored procedures, that sort of thing. So perhaps my test was too limited in scope there.

Table lookup - before execution.jpg
Table lookup - after execution.jpg
0 0
You are not allowed to follow up in this post.

Sign in to reply to this post.