What happens after a product is saved? Adobe Commerce serves the storefront from precomputed indexes rather than the source tables, and talks to external systems through a message queue. Build a sequence of operations: the server replays it from scratch in PHP on every request, in both indexer modes, and shows step by step, with timings, where the data is.
#1
#2
#3
#4
#5
indexer_update_all_views: processes the changelogs
How many entity_ids cron reindexes at once
// Update by Schedule: a mentés csak a forrást írja,
// a trigger a változásnaplóba jegyzi az entity_id-t
$changelog->insert($id); // <indexer>_cl
// cron: indexer_update_all_views
$pending = $changelog->pendingIds($toVersion); // DISTINCT entity_id
foreach (array_chunk($pending, $batchSize) as $batch) {
$indexer->reindexList($store, $batch); // részleges újraindexelés
}
$changelog->setStateVersion($toVersion); // mview_state.version_idAdobe Commerce does not compute category pages, search and prices from the normalised (EAV) product tables on every request; it reads prebuilt indexes instead: price per customer group, stock status, category-product relations, the search index. Indexers keep these in sync with the source.
In "Update on Save" mode the save itself runs the affected indexers: the index is fresh immediately, but every save is slower, and a bulk change (import, bulk price update) triggers a separate reindex per product.
In "Update by Schedule" mode database triggers on the subscribed tables only record the entity_id in the changelog (<indexer>_cl). The indexer_update_all_views cron job reindexes the distinct IDs received since the last processed version, in batches (the batch size is configurable per indexer, default 1000). A product saved three times is reindexed once.
The price: between the save and the next cron run the storefront still shows the old data (the orange "stale" marker in the demo). Even so, schedule mode is the usual choice for stores with large catalogs and frequent imports, with cron running regularly and without overlapping runs.
The demo simplifies on purpose: four indexers run in memory, and every save touches all subscribed indexers. In a real system indexes are database tables, the search index lives in OpenSearch, and there are many more indexers.
This site uses Google Analytics to measure visits. This requires your consent - see the privacy policy for details. Privacy Policy