Magento 2 Index Management: Update on Save vs Update on Schedule

Magento 2 Index Management: Update on Save vs Update on Schedule

[Updated: March 16, 2026]

Your Magento 2 store runs slower with every product update. Index management controls how fast those changes reach your storefront.

This guide covers both indexer modes, all CLI commands, parallel reindexing, and the critical changes in Magento 2.4.8 that affect every store.

Key Takeaways

  • Magento 2.4.8 changed the default indexer mode to Update by Schedule for all new indexers.
  • Update on Save processes changes in real time but increases server load. Update on Schedule batches changes through cron jobs.
  • The Customer Grid indexer now supports both modes since Magento 2.4.8.
  • Parallel reindexing with MAGE_INDEXER_THREADS_COUNT cuts processing time for large catalogs.
  • CLI commands give full control over indexer configuration, status, and parallel processing.

Quick Answer

Magento 2 index management = A system that transforms raw store data into optimized lookup tables for faster frontend performance. Choose between real-time updates (Update on Save) or batched cron processing (Update on Schedule).

Perfect for: Store admins managing product catalogs, developers optimizing reindex performance, teams switching from Magento 1 workflows.

Not ideal for: Frontend-only developers, theme designers, marketing teams without admin access.

What Is Index Management in Magento 2?

Index management in Magento 2 converts scattered database records into structured lookup tables. The system uses three components:

  1. Dictionary: The original data (product tables, price records, category assignments).
  2. Index: Optimized flat tables built from the dictionary data.
  3. Indexer: The processing engine that reads the dictionary and writes the index.

When you change a product price, the price indexer rebuilds its index table. When you add a product to a category, the category products indexer updates. Each change triggers the relevant indexer based on the data type affected.

The Magento Admin Panel provides index management under System > Tools > Index Management. You can also manage indexers through the Magento CLI.

Complete List of Magento 2 Indexers

Magento 2 ships with 13 core indexers. Each handles a specific data domain:

Indexer Name CLI Identifier Purpose
Category Products catalog_category_product Maps products to categories
Product Categories catalog_product_category Maps categories to products
Product EAV catalog_product_attribute Indexes product attribute values
Product Price catalog_product_price Calculates and stores product prices
Catalog Search catalogsearch_fulltext Full-text search index for product discovery
Stock cataloginventory_stock Tracks product stock status
Inventory inventory Multi-source inventory data
Catalog Rule Product catalogrule_rule Applies catalog price rules
Catalog Product Rule catalogrule_product Links products to catalog rules
Customer Grid customer_grid Customer data for admin grid display
Design Config Grid design_config_grid Design configuration data
Sales Rule salesrule_rule Shopping cart price rules
Target Rule (Adobe Commerce) targetrule_product_rule Related product targeting rules

Important change in Magento 2.4.8: The Customer Grid indexer now supports both Update on Save and Update on Schedule modes. Before 2.4.8, it supported Update on Save mode only.

Update on Save vs Update on Schedule

Impact of Magento 2 Index Management on Store Price Management System

Magento 2 offers two indexer modes. Each serves different store sizes and traffic patterns.

Aspect Update on Save Update on Schedule
Processing Rebuilds index tables right after each data change Batches changes and processes them through cron jobs
Server Load Higher load during admin operations. Every save triggers reindexing Lower load spread across scheduled intervals
Data Freshness Changes appear on the storefront within seconds Changes appear after the next cron run (default: every minute)
Best For Small stores with fewer than 5,000 SKUs Stores with large catalogs or multiple admin users
Admin Speed Can slow down the admin panel during bulk operations Minimal impact on admin performance
Setup Works out of the box, no cron configuration needed Requires proper cron job setup

Default mode changed in Magento 2.4.8: All new indexers now default to Update by Schedule. Previous versions defaulted to Update on Save. The system also removes unused changelog tables when switching from schedule to save mode.

How Update on Schedule Works (MView)

Update on Schedule uses Materialized Views (MView) to track changes. When you modify a product, Magento writes the change to a changelog table (suffixed with _cl). The cron job reads these changelog entries, processes only the changed records, and clears the changelog.

This partial reindexing approach is more efficient than full reindexing. The system processes only what changed rather than rebuilding entire index tables.

How to Switch Indexer Modes in Magento 2

Method 1: Admin Panel

Switching indexer modes using the Magento 2 Admin Panel

  1. Log in to your Magento 2 Admin Panel.
  2. Navigate to System > Tools > Index Management.
  3. Select the indexers you want to change.
  4. Choose Update by Schedule from the Actions dropdown.
  5. Click Submit to apply.

Method 2: Command Line (CLI)

The CLI provides more control and is the preferred method for production servers.

View current indexer modes:

bin/magento indexer:show-mode

Set all indexers to schedule mode:

bin/magento indexer:set-mode schedule

Set a specific indexer to realtime mode:

bin/magento indexer:set-mode realtime catalog_product_price

Run a manual reindex:

bin/magento indexer:reindex

Reindex a specific indexer:

bin/magento indexer:reindex catalogsearch_fulltext

Check indexer status:

bin/magento indexer:status

View all available indexers:

bin/magento indexer:info

Reset indexer to invalid state:

bin/magento indexer:reset

After switching to Update on Schedule, verify your cron jobs are running. Use bin/magento cron:run to test, or check your server crontab. For full cron configuration, see our cron job setup guide.

New in Magento 2.4.7+: Indexer Status Control

Magento 2.4.7 introduced the indexer:set-status command for fine-grained control:

bin/magento indexer:set-status {invalid|suspended|valid} [indexer]

Status Effect
invalid Marks the indexer as outdated, triggers reindexing on next cron run
suspended Pauses automatic reindexing (useful during large imports)
valid Marks the indexer as current

Use case: Suspend indexers before a bulk product import, then set them to invalid after the import completes. This prevents constant reindexing during the import process.

Parallel Reindexing in Magento 2

Large catalogs with 50,000+ products can take hours to reindex. Parallel reindexing splits the work across multiple threads.

Enable parallel reindexing:

MAGE_INDEXER_THREADS_COUNT=4 php bin/magento indexer:reindex

This processes multiple index chunks at the same time. Your server needs the PHP pcntl extension enabled for this to work.

Dimensions mode for price indexing:

The catalog product price indexer supports parallel processing by website and customer group:

bin/magento indexer:set-dimensions-mode catalog_product_price website_and_customer_group

Available dimension modes:

  • none (default, single thread)
  • website
  • customer_group
  • website_and_customer_group

Parallel reindexing reduces processing time but increases peak server load. For stores running on shared hosting, consider scheduling parallel reindex during off-peak hours. For more tips, see our speed optimization guide.

Troubleshooting Common Indexing Problems

Troubleshooting Magento 2 indexer status problems

1. Indexer Shows "Reindex Required"

Cause: Data changed but the index table was not updated.

Fix:

bin/magento indexer:reindex [indexer_name]

If the reindex fails, clear stale locks first:

rm -rf var/locks/

Then run the reindex command again.

2. Reindexing Hangs or Times Out

Cause: Large datasets exceed PHP memory limits or execution time.

Fix: Increase PHP memory for the reindex process:

php -d memory_limit=4G bin/magento indexer:reindex

For persistent issues, reindex specific indexers one at a time instead of all at once.

3. Cron Jobs Not Processing Scheduled Indexes

Cause: Cron is not configured or the index cron group is not active.

Fix: Verify cron is running:

bin/magento cron:run

Check your server crontab includes the Magento cron entry:

* * * * * cd /path/to/magento && php bin/magento cron:run >> var/log/magento-cron.log

4. Third-Party Extension Conflicts

Cause: Extensions can override native indexer behavior and cause errors.

Fix: Disable suspected extensions and test:

bin/magento module:disable Vendor_ModuleName

Run bin/magento indexer:reindex to confirm the issue resolves. Re-enable extensions one at a time to isolate the conflict.

5. High Server Load During Reindexing

Cause: Full reindex during peak traffic hours overloads server resources.

Fix: Switch to Update on Schedule mode and configure cron to run during low-traffic periods. For immediate relief, use the suspended status:

bin/magento indexer:set-status suspended

Resume after traffic subsides:

bin/magento indexer:set-status invalid

For stores with heavy database load, review MySQL optimization strategies to reduce reindex bottlenecks.

Best Practices for Index Management

Store Size Recommended Mode Reindex Strategy
Small (< 5K SKUs) Update on Save Default settings, manual reindex when needed
Medium (5K-50K SKUs) Update on Schedule Cron every minute, monitor changelog table size
Large (50K+ SKUs) Update on Schedule Parallel reindexing, dimensions mode for price index
Multi-admin Update on Schedule Prevents admin slowdown from concurrent saves

General guidelines:

  1. Use Update on Schedule for production. Magento 2.4.8 made this the default for good reason.
  2. Monitor indexer status. Run bin/magento indexer:status as part of your deployment checks.
  3. Reindex after deployments. Run bin/magento indexer:reindex after every code or configuration change.
  4. Separate cron groups. Configure the index cron group to run at different intervals than default cron tasks.
  5. Back up before large reindexes. Database corruption during reindexing can cause data loss.

FAQ

What is the difference between Update on Save and Update on Schedule in Magento 2?

Update on Save rebuilds index tables right after you change data in the admin panel. Update on Schedule batches those changes and processes them through cron jobs at set intervals. Schedule mode reduces server load and is the default in Magento 2.4.8.

How do I perform a full reindex in Magento 2?

Navigate to your Magento root directory and run bin/magento indexer:reindex from the command line. This rebuilds all index tables. You can also reindex a specific indexer by adding its name: bin/magento indexer:reindex catalog_product_price.

Why is my Magento 2 indexer stuck on "Processing"?

A stuck indexer indicates an incomplete previous reindex. Clear the lock files with rm -rf var/locks/ and run bin/magento indexer:reindex again. If the problem persists, increase PHP memory with php -d memory_limit=4G bin/magento indexer:reindex.

Can I run parallel reindexing in Magento 2?

Yes. Set the MAGE_INDEXER_THREADS_COUNT environment variable before running the reindex command. For example: MAGE_INDEXER_THREADS_COUNT=4 php bin/magento indexer:reindex. Your server needs the PHP pcntl extension enabled.

What changed with indexers in Magento 2.4.8?

Magento 2.4.8 (released February 2026) made three changes: all new indexers default to Update by Schedule, the Customer Grid indexer now supports both modes, and unused changelog tables are cleaned up when switching from schedule to save mode.

How do I check which indexers need reindexing?

Run bin/magento indexer:status from the command line. Indexers showing "Reindex required" need processing. You can also check indexer status in the admin panel under System > Tools > Index Management.

Should I use Update on Save or Update on Schedule for a small store?

For stores with fewer than 5,000 products and a single admin user, Update on Save works fine. The real-time updates keep your storefront current without cron configuration. Switch to Update on Schedule when you notice admin panel slowdowns during product edits.

How do I suspend indexers during a bulk import?

Use bin/magento indexer:set-status suspended before starting the import. This pauses all automatic reindexing. After the import completes, run bin/magento indexer:set-status invalid to trigger a full reindex on the next cron run. This command is available in Magento 2.4.7 and later.

What happens if cron jobs stop running with Update on Schedule mode?

Your storefront data becomes stale. Product changes, price updates, and inventory adjustments will not appear until cron resumes. Monitor your cron with bin/magento cron:run and check var/log/magento-cron.log for errors.

How long does a full reindex take in Magento 2?

Reindex time depends on catalog size and server resources. A store with 10,000 products on adequate hardware finishes in about 5 to 15 minutes. Stores with 100,000+ products can take about 1 to 4 hours. Parallel reindexing reduces these times based on available CPU cores.

Summary

Magento 2 index management determines how fast data changes reach your storefront. Update on Save provides real-time updates for small stores. Update on Schedule reduces server load through batched cron processing and is now the default in Magento 2.4.8.

Key points from this guide:

  1. All new indexers in Magento 2.4.8 default to Update by Schedule. Previous versions used Update on Save.
  2. The Customer Grid indexer supports both modes since 2.4.8.
  3. Parallel reindexing with MAGE_INDEXER_THREADS_COUNT cuts processing time for large catalogs.
  4. The indexer:set-status suspended command (2.4.7+) prevents constant reindexing during bulk imports.
  5. Monitor indexer status as part of every deployment with bin/magento indexer:status.

For stores where indexing performance matters, managed Magento hosting provides optimized server configurations, proper cron management, and expert support for reindexing at scale.

CTA

CEO & Co-Founder

Raphael Thiel co-founded MGT-Commerce in 2011 together with Stefan Wieczorek and has built it into a leading Magento hosting provider serving 5,000+ customers on AWS. With 25+ years in e-commerce and cloud infrastructure, he oversees hosting architecture for enterprise clients. He also co-founded CloudPanel, an open-source server management platform.


Get the fastest Magento Hosting! Get Started