| Project: | Views Bulk Operations (VBO) |
| Version: | 7.x-3.x-dev |
| Component: | Core |
| Category: | task |
| Priority: | normal |
| Assigned: | Unassigned |
| Status: | active |
Issue Summary
Since we are getting closer to a final release, it's time to see what currently negatively affects VBO performance, and start fixing it.
In its current state, VBO for D7 has better performance than VBO for D6, and during the betas we have identified and fixed several performance problems (loading all actions on all page loads, even those with no VBO, inefficient Batch API usage). However, there is still room for improvement.
1) #1319504: Populate operations only if really needed
VBO is currently loading all operations, even if only a few are enabled for the View. Which is very bad if you have a lot of Rules components, and most Commerce sites do, for example.
das-peter has posted an initial patch and I will be working on it soon.
This is the only critical problem.
2) #1176794: Improve Batch Performance
Making our Batch API execution method better able to handle a large number of items (the current code stops working somewhere between 50 and 75 thousand selected items on my setup. The proposed approach would remove that limitation).
3) #1367646: Stop passing the selection to action forms, improve performance by deferring loading all items on all pages until execution.
Issue title says it all. No need to do the load before the config and confirmation steps. Needed for #4.
4) #1367644: Batch the selecting of all ids on all pages, refactor execution types.
While #2 will allow us to process any number of selected items, there's still a matter of getting all the entity ids and putting them into the queue used by Batch API.
Right now VBO tries to load all pages at once, and dies if there are many items (like 75 thousand on my setup).
For that we need to batch the selection, loading one page at the time and filling the queue. This also creates the need for refactoring the execution type code, since it's becoming too big and hard to follow and maintain.