At WP Engine we strive to promote best practices to make your site run efficiently. When using a theme or plugin it is important to store data in a way that is quick for WordPress to retrieve it. It is also important to do this in a way that does not interfere with other core functions of WordPress. That is why our platform does not allow you to store large amounts of information in the wp_options table of your site’s database.
How the wp_options table works:
Every call of get_option() in your site requires a database read to all rows in the table. Storing large amounts of data in the options table could be a bottleneck in your site’s speed. This is because every call of this common core function requires your site has to crawl through the many rows stored to find what it’s looking for. When there are many rows, rows with lots of content, or both it is taxing on the server to resolve your site. To prevent this from being an issue, our infrastructure regularly cleans up large options by removing them.
What is a large option?
In our environment a large option is defined as having more than 1mb for autoload content and 4mb for non-autoload content. Rows in wp_options with autoload set to “yes” are considered large at 1mb because all of it is loaded up on every single page load. In our findings, mainly transients are stored in the options table, so they can safely be removed because they’re inherently, well, transient, and will be regenerated if needed. But sometimes themes or plugins will store a large amount of data this way, which can cause issues for those features. This is commonly identified by seeing javascript or html stored in the table.
We are passionate about promoting best practices when dealing with your information and must run these scheduled tasks to keep your site running fast and to keep users engaged with your content. If you notice any issues and have any questions about how our platform handles large options tables, please consult our articles, or feel free to contact us.