Submit your WORKLOAD questions!

Hey everyone,

For those that don’t know, I’m the guy working behind the scenes on the Bubble User Manual. We’re currently working on one of the most requested subjects: more in-depth guides on the workload metric.

As such, I’m trying to get an understanding of the most widely asked questions and areas where you want more detailed documentation. Please keep in mind that:

  • the questions we’re looking for are the ones that can improve the documentation, so this is not the thread for questions about future development of different tools, reports and the metric itself. (For that, you may be interested in this thread instead).
  • Focus on questions that are relevant to how to optimize for workload
  • If you have had great success optimizing in your own app, feel free to share that too

I appreciate the input! Let’s join forces and craft some stellar documentation on this :rocket:

4 Likes

I have many questions actually. Here is a list of them. Please excuse them being written in rough manner as I had noted those for myself to check.

  • Are workflow units predefined for actions like “search for…” etc or are the workflow units calculated run time on the basis of actual processing done by those respective queries?
  • If a query is used at multiple places in the page, will it be reused or we’d be charged each time?
  • Similarly if same query is used in a workflow in different actions or even within same action in different assignment expressions or conditions, will it be costing WUs for all those instances?
    • What if at one place we use the query for assigning results to a list, at other place we use count of it, and at other place we use its first item? Will these all be considering same base query or three different queries?
  • If same query is performed frequently, do we get advantage of caching?
  • Do we get charged high even if we have only one row in a table and we run query on it? We maintain certain configurations (the ones that can’t be done via option sets as they need to be changed runtime or which depend on other data elements) in ‘data types’). We need to look up those configurations often for certain actions. Will this cost us bomb now? What can we do to avoid these (Some of these can’t be moved to option sets)?
  • “calculating how much wu each action is taking” must be also a quite cpu consuming thing and it is now happening for each action. Is that itself consuming our own capacity and increasing WUs too?
  • If there is a group/repeating group on a page which has a data source that needs to be searched, does each page load cost WUs corresponding to each of those groups/repeating groups?
    • Does it depend on whether the data in those elements are being used or not?
    • Does it depend on whether the element is visible or not?
  • If a “make changes to a thing” has a condition which uses a search that is used in the make changes action itself too, will we be charged for search twice?
  • If there’s a pop up that has some elements with searched values, when the pop up is hidden and made visible multiple times, are we charged for those searches each time the pop-up is made visible?
    • What if this pop up is a reusable?
  • If there is a option set type of field in a data and that field has attribute which is of number, then if we query the data and try to do aggregation like sum of values of numeric attribute of option set field, will it cause heavy WUs/capacity consumption?
  • If I have two data types A and B such that A has a field which is list of B. Now if I already have an instance of A downloaded on page, then if I want a list of B which is subset of A’s instance’s B-list values, then is it better to do a :filtered on A’s B-list or do a “search for” directly on B? Similarly what if I want to access certain fields of A’s B-list?
  • Will making original image that is uploaded in DB smaller reduce the download time of images (when the image to be shown is small)
  • If there is a repeating group that has some content, and then there is another repeating group that is using rg’s content and putting a ‘group by’ on it, will it be resulting in full query again? Will it be doing it on downloaded data? Will it be server side query or client side?
  • Say I have two data types A, B and an option set C. Say, A has two fields of type B and C and a field type ‘date’. Now, say I query for all the data types of A which have the date of today and put them in an RG (say RGA1). In another group (say GB) I set the data type as B and load a specific value in it. And say in another RG (Say RGC) I load all the option set values of C. Now say there is another RG of data type A (say RGA2). In this I want to store only the elements within RGA1 which have the field B as the specific one that I have in GB. So, for that if I set RGA2’s data source as RGA’s values: filtered where ‘B = GB’s value’ and ‘C is in RGC’s values’, will it cost be extra WUs than what would have costed to load RGA1 and GB? Isn’t this a totally front-end activity amongst the data points already loaded? Why should this cost WUs?
    • Similarly if I have a repeating group out of some “group by on some fields”. Now if I want to use this repeating group at other places by putting some filters on dates and other fields used in group by, will that be requery? Extra WUs instead of saving WUs?
  • If I have a query “search for user’s tokens’ count” will it be an expensive query? What if “tokens” can be just a text field? What if it is a list of texts type of field?
  • Since using “current user” itself costs us WUs each time, can we save those WUs by making it as a data source on a group? Or will it have to be custom state?

I have recently discussed a few things with Support on how WUs work when I noticed some absurdities in my logs, and frankly it is becoming more and more opaque and unclear on how these are calculated.

10 Likes

The one optimization that I’ve made to my apps, that has saved me tons of WU overall, is to store all search results into a state or as parameters in a custom event.

Storing search results into states ensures that I control when a list updates (or doesn’t) and just skips the whole “will this same query cost me WU?” dilemma. Passing search results into custom events gives me the same level of control in my workflows.

It also simplifies a lot of troubleshooting because the root of the data will always go back to one “set state” action or “trigger/schedule custom event” action.

3 Likes

@mghatiya Excellent questions. Thanks for compiling

2 Likes

@mghatiya thank you so much for compiling that list of questions, this is great! Will dig into them and try to get them answered.

@ihsanzainal84 thanks for sharing!

1 Like

As someone that needs to load a lot of data and filter them heavily, this has me intrigued.

Do you just save the initial search to a custom state and then filter the results further only using the data saved in the custom state?

Also, this method doesn’t have any effect on WU spent for Individual Data request right?

Thanks,

When you save a search result to a state, it is saved as a static list. The list won’t update itself in realtime. If that list is of a Bubble datatype, each item in that list will still maintain its realtime properties. I will assume this still does incur individual data requests?

I haven’t tested making individual Things static since for me keeping individual Things realtime is my desired result in most cases.

Yes, I do refer to those states for all my actions, elements and workflows.

what’s the impact of privacy rules on WU consumptions?

Some relevant threads that highlight the questions/confusions that people have and also raise questions on why WUs are charged the way they are.

Also I had a thread with Support where WUs were charged irrationally for a recursive workflow. I have put some details of that here in this post: [Feature Enhancement] Improved Scalability of Schedule API Workflow on a List - #10 by mghatiya

I am very keen to understand and demystify this workload unit thing.

@petter please let me know if you’d like me to have as one of the contributors or testers or something else in this process of documenting and clarifying WU consumption.

2 Likes

Thank you @mghatiya!

We are getting close to a major update now, which includes a lot more questions added to the workload FAQ along with the new article series.

Please post your questions that you’d like answered before the update is published, please let me know asap!

3 Likes

What’s the WU cost difference between “do a search for - using constraints” and “do a search for - filter”?

I don’t understand this. I’ve been waiting since November 15th from an answer from Bubble support over whether this is a bug or feature but apparently the engineering team still haven’t answered (last contact was November 29th). Can you shed any light?

1 Like