Understanding and Fixing NextGEN Gallery Database Bloat in wp_options
Content
Many users of the 'Photo Gallery, Sliders, Proofing and Themes – NextGEN Gallery' plugin report a common issue: their WordPress database, specifically the wp_options table, becomes filled with thousands of entries, leading to performance problems and even database quota limits. This guide explains why this happens and outlines the most common, safe solutions.
The Core Problem: Transient Cache Buildup
The primary culprit for this database bloat is the plugin's caching system. NextGEN Gallery heavily relies on WordPress transients to store rendered HTML output for galleries, which improves frontend performance. These transients are stored in the wp_options table with names like _transient_6__1148182207 or _transient_timeout_6__2510218411.
Under normal circumstances, WordPress should automatically delete these temporary entries once they expire. However, this automatic cleanup can fail due to:
- Object Caching: If your site uses an external object cache (e.g., Redis, Memcached), WordPress's native transient cleanup mechanism may not function correctly. The plugin uses a special option named
photocrati_cache_trackerto manage its transients in this environment, which can itself become bloated with duplicate entries. - Server Configuration: Some server setups, particularly those where the WordPress cron isn't running reliably, can prevent the scheduled cleanup of expired transients.
When the cleanup fails, these expired transients accumulate, sometimes numbering in the hundreds of thousands or even millions, drastically increasing the size of your wp_options table and slowing down database queries.
Important Notes Before You Begin
- Do NOT delete draft posts: The plugin also creates draft posts in the
wp_poststable for each image. As confirmed by the NextGEN Gallery team, these are necessary and deleting them will unlink your images from the plugin. - Be cautious with other data: Other entries in
wp_postmetawith keys like__defaults_setare used to store plugin settings. Manually deleting these is not recommended.
Common and Safe Solutions
1. Manually Clear the NextGEN Cache
The first and safest step is to use the plugin's built-in tool. Navigate to NextGEN Gallery → Other Options → Miscellaneous and click the "Clear image cache" button. This will purge the plugin's cached gallery displays, which are the source of the transient entries.
2. Use a Transient Cleanup Plugin
If the cache clearing doesn't resolve the issue, the next step is to safely remove the expired transients that WordPress failed to delete. You can do this by installing a dedicated, well-reviewed cleanup plugin such as "Delete Expired Transients". These tools are designed to safely target only expired transients, minimizing the risk of deleting important data.
3. Investigate Caching and Cron Issues
For a long-term solution, you must address the root cause.
- Check your Object Cache: If you use an external object cache, be aware that this is a known environment where transient cleanup issues occur. The behavior of the
photocrati_cache_trackeroption is a workaround for this specific scenario. - Ensure WP-Cron is Functional: Verify that your WordPress cron (which handles scheduled tasks like transient cleanup) is working correctly. On some hosts, you may need to disable the default virtual cron and set up a real server cron job to hit the
wp-cron.phpfile regularly.
4. For Advanced Users: Database Query
As a last resort, if the problem is severe and you are comfortable with direct database access, you can run a manual SQL query to delete expired NextGEN transients. Always back up your database completely before proceeding. Connect to your database via phpMyAdmin or another tool and run a query similar to:
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_%__%'
AND option_name NOT LIKE '%_transient_timeout_%__%';
This will target the transient values while preserving the timeout records. The exact naming pattern may vary.
Conclusion
Database bloat caused by NextGEN Gallery is almost always related to a failure in the transient cleanup process. By using the plugin's cache clearing tool and a dedicated transient management plugin, most users can successfully resolve the issue and reclaim their database space.
Related Support Threads Support
-
data in table wp_options over quota in my databasehttps://wordpress.org/support/topic/data-in-table-wp_options-over-quota-in-my-database/
-
draft wp_posts is an error?https://wordpress.org/support/topic/draft-wp_posts-is-an-error/
-
lots of wp_optionshttps://wordpress.org/support/topic/lots-of-wp_options/
-
Database bloathttps://wordpress.org/support/topic/database-bloat-3/
-
Plugin generates 16GB of data and 1.5 million entrys within 3 days in wp_optionshttps://wordpress.org/support/topic/plugin-generates-16gb-of-data-and-1-5-million-entrys-within-3-days-in-wp_options/
-
What does ‘photocrati_cache_tracker’ do?https://wordpress.org/support/topic/what-does-photocrati_cache_tracker-do/
-
Performance fix for ‘photocrati_cache_tracker’ transient cachehttps://wordpress.org/support/topic/performance-fix-for-photocrati_cache_tracker-transient-cache/