High Performance Order Storage is (soon to be) the New Normal

Since January 2022, we have been working hard to optimize the performance of WooCommerce by focusing on Orders and how we can more efficiently manage Order data. We wanted to improve the experience for Merchants and their customers while creating a simpler structure for developers. The result is High-Performance Order Storage (HPOS).

In November, we launched HPOS as an opt-in feature, which allowed us to work with our developer community to further optimize HPOS while we worked out a few bugs and continued testing our platform and working to improve performance.

Performance Improvements

Common requests are faster by up to 30% (and up to 43% for 95 percentile response time)

To start, we specifically focused on order creation because it was directly related to the checkout flow. HPOS unlocks major performance improvements, including up to 5x improvement in performance during order creation. In our testing, the checkout flow was up to 1.5x faster after enabling HPOS.

With the new tables having their own indexes, we’ve seen improvements in meta_query lookups (up to 10x), and searching customer orders (up to 40x). Even when searching against non-indexed columns, we have seen gains around 3x.

HPOS also reduces the overall database size by eliminating the need to store data in the _posts and _postmeta tables. This reduces unnecessary data within these core tables and improves performance across all queries, not just those related to orders.

Scalability, Reliability & Simplicity

Improving performance was a key goal when exploring how HPOS could improve WooCommerce, but it wasn’t the only one. Maintaining order data in core WordPress tables created needless complexity. With new data stores, it’s now easier to extract order-specific data for backups or reporting at any time.

With HPOS, orders are now highly scalable and merchants of any size can handle millions of orders without ever worrying about performance.

Backing up order data is now simpler than ever, giving merchants peace of mind that their customer data is safe.

Ensuring Compatibility with HPOS

Any extensions, themes or custom code using the Woo CRUD are already compatible with HPOS. However, for merchants to use extensions with HPOS, extensions will need to be marked as compatible. You can use this guide to learn how to mark your extension compatible.

Making HPOS the Default Experience

By August 2023 High Performance Order Storage will be enabled by default on all new WooCommerce stores. Any extensions that are not marked compatible will display an incompatibility error message on new stores, starting in August.

Questions?

If you have any questions, please leave a comment on this post. You can also take a look at the available documentation on how to mark extensions as compatible and get started right away!

Further Resources


Keep yourself in the loop!

Sign up for the WooCommerce developer newsletter:
Hidden
Hidden
Hidden


9 responses to “High Performance Order Storage is (soon to be) the New Normal”

  1. Can’t wait for product high performance tables. Hope that will be added on roadmal

  2. Can’t wait for high performance product tables if it’s gonna get on roadmap.

    1. This has certainly been discussed, but after a LOT of research we realized that we would get the highest impact by starting with Order Tables. There are not currently plans to do High Performance Product Tables at this point, however we are committed to optimizing for performance in a number of ways. One such initiative is around improvements to our API, which is currently on our Roadmap (https://developer.woocommerce.com/roadmap/).

      1. Is there any blog on what you guys are planning for the API? Any chance it will go in the direction of GraphQL?

        We have integrated many stores with inventory systems using the current rest api and it’s so painfully slow 🙁

  3. When will the old storage model no longer be supported?

    1. We don’t yet have a date for when we will no longer support the usage of our current data stores for orders. However, as outlined in this post, we will be defaulting to enabling HPOS in August, so that all new stores will start with this option and we are encouraging current stores to switch to this model sooner rather than later.

    2. Umar Ahmad Azizi Avatar
      Umar Ahmad Azizi

      I always updated

  4. Once HPOS is official in August, what happens to existing sites using the original method? Will there be an update to take existing orders and place them in the new table?

    1. Initially, HPOS will become the default for new stores only. However, existing stores can opt-in to HPOS and, as part of this process, existing orders will be copied over to the new order tables.

      (Apologies for the delayed response.)

Leave a Reply

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