Some performance benchmarks

Test cases

We wanted to see how well the new HPOS feature in WooCommerce 8.2, which is from now on the default way to store order data, performs. This change mostly impacts the WP Admin dashboard for big stores with hundreds of thousands or millions of orders. To test this, we created 500,000 orders and customers in our test store, along with 1.3 million products. Here’s the list of the test scenarios we used:

  1. Checkout with one single product
  2. Page load speed admin orders list
  3. The page load speed of admin orders list search / full-text query
  4. Page load speed order edit page
  5. Duration order update process

Results

We tested 4 different system configurations:

  • Wocommerce orders with old DB structure and enabled ElasticPress
  • Wocommerce orders with old DB structure and disabled ElasticPress
  • Wocommerce orders with HPOS structure and enabled ElasticPress
  • Wocommerce orders with HPOS structure and disabled ElasticPress

To measure Query time we used the “Query Monitor” plugin. Load time is the time to load the page in the browser (no scripts/styles only document).

TestcaseWP DB Load Time; EP enabledWP DB Query Time; EP enabledWP DB Load Time; EP disabledWP DB Query Time; EP disabledHPOS Load Time; EP enabledHPOS Query Time; EP enabledHPOS Load Time; EP disabledHPOS Query Time; EP disabled
Checkout with one single product12.0-12.1s11.26s10.4s7.8s11.3s10.3s9.6s8.9s
Admin Orders List2.2s0.2s10.8s7.8s2.1s0.66s3.2s0.35s
Admin Orders List Search (text, no cache)3.5s1,1-1,5sGateway Time-out (600s)Gateway Time-out (600s)72s68s66s61s
Order Edit Page1s0.15s7.7s5.4s1.5-1.6s0.6s1s0.25s
Update Order11.2s10.2s15.2s13.66s12.68s11.6s11.3s9.7s

We can see that ElasticPress + Elastic search is the perfect solution if you need a search or filters on the shop frontend.

Without ElasticPress, we weren’t able to filter 1,300,000+ products and 500,000 orders at all, it took minutes or returned timeout. ElasticPress solved this problem. As usual, any tool has pros and cons, we can see that it is great for complex SELECT operations, but if we need CREATE or UPDATE it works a bit slowly because we need to sync data with the ElasticSearch index.

Also, we see that when ElasticSearch integration is disabled, the HPOS feature works faster than the previous DB structure in the WP Admin dashboard, especially SELECT operations like the list of orders or single order page.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top