WordPress
WooCommerce database load: find the queries and tables slowing a store
WooCommerce database load comes from product/catalog queries, carts/sessions, orders, Action Scheduler, analytics, search/filter extensions, admin reports, and plugins that add metadata joins. Tuning starts by capturing the slow request and its queries. Do not assume a larger database server is the first fix.
Separate storefront, checkout, admin and background load
Measure request latency/query time for product pages, search/filter, cart/checkout, account, wp-admin orders/reports, and Action Scheduler jobs. Different paths stress different tables and cache layers.
A slow admin report should not be diagnosed from storefront cache-hit performance.
Capture repeated and slow queries
Use database slow-query tooling and WordPress profiling to identify execution count, rows examined, indexes, locks, and N+1 patterns. Extensions may add joins against postmeta/order metadata that dominate specific pages.
Compare query plans after WooCommerce storage-model or plugin changes.
Use cache only where correctness permits
Page caches should bypass cart/checkout/account and personalized responses. Object cache can reduce repeated reads but does not remove expensive uncached write paths or bad queries.
Invalidate product/stock/pricing data correctly when using persistent cache.
Plan capacity around peaks and writes
Sales/imports can create concentrated order and inventory writes. Monitor DB CPU, memory, disk latency, connections, lock waits, and PHP worker queues during peak scenarios before resizing. Capture a normal weekday baseline as well as a promotion/import peak so a short burst is not mistaken for permanent capacity demand.
- Profile distinct WooCommerce paths.
- Find slow/repeated queries.
- Bypass personalized page cache.
- Measure write-heavy peak behavior.