diff --git a/src/_data/toc/php-developer-guide.yml b/src/_data/toc/php-developer-guide.yml index c48762ad1b2..ef65baff106 100644 --- a/src/_data/toc/php-developer-guide.yml +++ b/src/_data/toc/php-developer-guide.yml @@ -122,7 +122,7 @@ pages: - label: Asynchronous/deferred operations url: /extension-dev-guide/async-operations.html - + - label: Service contracts url: /extension-dev-guide/service-contracts/service-contracts.html @@ -166,7 +166,7 @@ pages: url: /extension-dev-guide/indexing.html - label: Indexer optimization - url: /extension-dev-guide/indexer-batch.html + url: /extension-dev-guide/indexer-optimization.html - label: Adding a custom indexer url: /extension-dev-guide/indexing-custom.html @@ -214,7 +214,7 @@ pages: url: /extension-dev-guide/message-queues/implement-bulk.html - label: Handling outdated in-memory object states - url: /extension-dev-guide/message-queues/refresh-config.html + url: /extension-dev-guide/message-queues/refresh-config.html - label: Message queues overview url: /extension-dev-guide/message-queues/message-queues.html @@ -227,7 +227,7 @@ pages: - label: Adding extension attributes to entity url: /extension-dev-guide/extension_attributes/adding-attributes.html - + - label: Adding an admin grid url: /extension-dev-guide/admin-grid.html diff --git a/src/guides/v2.4/extension-dev-guide/indexer-batch.md b/src/guides/v2.4/extension-dev-guide/indexer-optimization.md similarity index 81% rename from src/guides/v2.4/extension-dev-guide/indexer-batch.md rename to src/guides/v2.4/extension-dev-guide/indexer-optimization.md index 7d344bb9f5f..23c3a17ba65 100644 --- a/src/guides/v2.4/extension-dev-guide/indexer-batch.md +++ b/src/guides/v2.4/extension-dev-guide/indexer-optimization.md @@ -1,6 +1,8 @@ --- group: php-developer-guide title: Indexer optimization +redirect_from: + - /guides/v2.4/extension-dev-guide/indexer-batch.html --- ## Indexer Batching @@ -189,6 +191,26 @@ To determine whether any 3rd-party extensions are using the Product EAV indexer, To disable the Product EAV indexer in the Admin, go to **Stores** > Settings > **Configuration** > **Catalog** > **Catalog** > **Catalog Search** and set the value of **Enable EAV Indexer** to No. +## Customer group limitations by websites + +By default, all websites are assigned to a customer group. If there are a lot of products, websites and customer groups (shared catalogs), the indexation time of product price and catalog rule indexers can be heavily increased because websites, customer groups (shared catalogs) and product SKUs are multiplied in Product Price and Catalog Rule indexer related tables. + +It is possible to exclude websites from a customer group (shared catalog) on [customer group create/edit page](https://docs.magento.com/user-guide/customers/customer-groups.html#create-a-customer-group). This can decrease Product Price and Catalog Rule indexation time because excluded websites do not participate in indexation. + +When a customer group with a new, excluded website is saved, Product Price, Catalog Rule and Catalog Search indexes are invalidated. If you have many products, websites and customer groups, it is recommended that you pause your reindex processes for a while until you have finished excluding websites from customer groups. + +It is not possible to exclude websites from a shared catalog on a shared catalog create/edit page. It is possible to exclude websites from a customer group that is created from a shared catalog. + +{:.bs-callout-info} +No websites are excluded from a customer group or shared catalog by default. + +{:.bs-callout-info} +You cannot exclude websites from the `NOT LOGGED IN` customer group. + +{:.bs-callout-warning} +When a website is added to the excluded customer group and a customer who belongs to this group is trying to login to their account on the excluded website, the customer gets the `"This website is excluded from customer's group."` warning. +Customers are not allowed to login to the website even if [the scope of customer accounts is shared with all websites](https://docs.magento.com/user-guide/customers/account-scope.html) because there are no prices in the index table for this user. + {:.ref-header} Related topics diff --git a/src/guides/v2.4/performance-best-practices/advanced-setup.md b/src/guides/v2.4/performance-best-practices/advanced-setup.md index dd711f662cb..6d693203baf 100644 --- a/src/guides/v2.4/performance-best-practices/advanced-setup.md +++ b/src/guides/v2.4/performance-best-practices/advanced-setup.md @@ -27,6 +27,12 @@ For example, if you are running a profile similar to B2B Medium, you can overrid {:.bs-callout-info} We have not enabled batching for the catalog rules indexer. Merchants with a large number of catalog rules need to adjust their MySQL configuration to optimize indexing time. In this case, editing your MySQL configuration file and allocating more memory to the TMP_TABLE_SIZE and MAX_HEAP_TABLE_SIZE configuration values (the default is 16M for both) will improve performance for this indexer, but will result in MySQL consuming more RAM. +### Limit customer groups and shared catalogs by websites + +Large numbers of product SKUs, websites and customer groups or shared catalogs impacts the indexation time of Product Price and Catalog Rule indexers. This is because all websites are assigned to all customer groups (shared catalogs) by default. + +To decrease indexation time it's possible to [exclude certain websites from customer groups (shared catalogs)]({{page.baseurl}}/extension-dev-guide/indexer-optimization.html#customer-group-limitations-by-websites). + ## Set up Redis Sometimes one Redis instance is not enough to serve incoming requests. There are several solutions that we can recommend to address this situation.