Back to all tutorials
MasterAI

Why your WooCommerce store gets slower every month (it's not your hosting)

27 June 2026·6 min·WooCommerce, WordPress, Database, Performance, Optimization
Why your WooCommerce store gets slower every month (it's not your hosting)

It's a slow drift: your store used to be fast, and month after month it gets sluggish — a heavy backend, slower product pages — even though nothing changed on the server. The cause is almost always the database quietly bloating in production. The good news: cleaning it up costs nothing extra on hosting.

Here are the four sources — each with the fix.

1. Autoloaded transients

Transients set without an expiration land in wp_options with autoload = yes — and then get pulled into memory on every single page request, before a single product query runs. On a mature WooCommerce store, 5–10 MB of autoload is common. Anything over 800 KB–1 MB is a real problem.

Fix: Delete expired transients (wp transient delete --expired), audit the autoload payload, and keep it under 1 MB.

2. Action Scheduler logs

WooCommerce uses the Action Scheduler as its task queue — every order, email and sync logs an entry. The wp_actionscheduler_* tables grow unchecked when the cleanup routine isn't running properly.

Fix: Check WooCommerce → Status → Scheduled Actions to confirm cleanup is actually running, and set a log retention.

3. Unbounded sessions

The woocommerce_sessions table and orphaned carts grow forever when expired sessions are never cleared.

Fix: Purge expired sessions regularly via a scheduled job (cron).

4. Revisions & orphaned metadata

Deleted products and uninstalled plugins leave junk behind: endless post revisions, orphaned postmeta rows, dead term relationships.

Fix: Limit revisions (WP_POST_REVISIONS), clean the orphans, then OPTIMIZE TABLE.

Before / after — same hosting

Here's what a typical cleanup looks like, without touching the server:

  • Autoload: 8.4 MB → 0.6 MB
  • Slow query: 1.8 s → 0.2 s
  • Admin load: 4.1 s → 0.9 s

The real mistake is almost never "not enough server" — it's that the cleanup job never ran. Automate it (weekly) and the DB stays lean.


Want the next build & audit guides — with every gotcha? Subscribe to the "Built with AI" newsletter.

Prefer done-for-you? If you'd rather I clean your DB and automate the cleanup (plus a speed audit, migration to your own server): drop me a line — it's what I do day to day.

Built with AI — the newsletter

Hands-on AI tutorials and the tools I actually use — straight to your inbox. Free, no hype.

Powered by Substack. Unsubscribe anytime.

Back to all tutorials