インデクサーの管理
すべてのインデクサーのリストを表示するには:
bin/magento indexer:info
リストは次のように表示されます。
design_config_grid Design Config Grid
customer_grid Customer Grid
catalog_category_product Category Products
catalog_product_category Product Categories
catalogrule_rule Catalog Rule Product
catalog_product_attribute Product EAV
inventory Inventory
catalogrule_product Catalog Product Rule
cataloginventory_stock Stock
targetrule_product_rule Product/Target Rule
targetrule_rule_product Target Rule/Product
catalog_product_price Product Price
catalogsearch_fulltext Catalog Search
salesrule_rule Sales Rule
インデクサーのステータスの表示
このコマンドを使用して、すべてのインデクサーまたは特定のインデクサーのステータスを表示します。 例えば、インデクサーのインデックスを再作成する必要があるかどうかを確認します。
コマンドオプション:
bin/magento indexer:status [indexer]
ここで、 [indexer]
は、インデクサーのスペース区切りのリストです。 省略 [indexer]
すべてのインデクサーのステータスを表示します。
結果の例:
+----------------------+------------------+-----------+---------------------+---------------------+
| Title | Status | Update On | Schedule Status | Schedule Updated |
+----------------------+------------------+-----------+---------------------+---------------------+
| Catalog Product Rule | Reindex required | Save | | |
| Catalog Rule Product | Reindex required | Save | | |
| Catalog Search | Ready | Save | | |
| Category Products | Reindex required | Schedule | idle (0 in backlog) | 2021-06-28 09:45:53 |
| Customer Grid | Ready | Schedule | idle (0 in backlog) | 2021-06-28 09:45:52 |
| Design Config Grid | Ready | Schedule | idle (0 in backlog) | 2018-06-28 09:45:52 |
| Inventory | Ready | Save | | |
| Product Categories | Reindex required | Schedule | idle (0 in backlog) | 2021-06-28 09:45:53 |
| Product EAV | Reindex required | Save | | |
| Product Price | Reindex required | Save | | |
| Stock | Reindex required | Save | | |
+----------------------+------------------+-----------+---------------------+---------------------+
再インデックス
すべてのインデクサーまたは選択したインデクサーの再インデックスを 1 回だけ実行するには、このコマンドを使用します。
コマンドオプション:
bin/magento indexer:reindex [indexer]
ここで、 [indexer]
は、インデクサーのスペース区切りのリストです。 省略 [indexer]
すべてのインデクサーを再インデックス化します。
結果の例:
Design Config Grid index has been rebuilt successfully in <time>
Customer Grid index has been rebuilt successfully in <time>
Category Products index has been rebuilt successfully in <time>
Product Categories index has been rebuilt successfully in <time>
Catalog Rule Product index has been rebuilt successfully in <time>
Product EAV index has been rebuilt successfully in <time>
Inventory index has been rebuilt successfully in <time>
Catalog Product Rule index has been rebuilt successfully in <time>
Stock index has been rebuilt successfully in <time>
Product Price index has been rebuilt successfully in <time>
Catalog Search index has been rebuilt successfully in <time>
並列モードでのインデックス再作成
インデクサーを並列モードで実行する前に、プロセス制御のサポート(pcntl
)を使用します。 参照: インストール PHP のドキュメントに書かれています。
インデクサーは、並列モードでのインデックス再作成をサポートするために、スコープ指定されマルチスレッド化されます。 インデクサーのディメンションで並列化され、複数のスレッドにわたって実行されるので、処理時間が短縮されます。
このコンテキストでは、 dimension
は再インデックス化の範囲(例:) website
または、特定の customer_group
.
インデックスの並列化は、スコープ指定されたインデクサーにのみ影響します。つまり、Commerceでは、すべてのデータを 1 つのテーブルに保持するのではなく、インデクサーをスコープとして使用して、データを複数のテーブルに分割します。
次のインデックスを並列モードで実行できます。
Catalog Search Fulltext
は、ストアのビューと並行して使用できます。Category Product
は、ストアのビューと並行して使用できます。Catalog Price
は、web サイトと顧客グループで並行できます。Catalog Permissions
は、顧客グループ別に並べ替えることができます。
並列化を使用するには、製品価格インデクサーで使用可能なディメンションモードの 1 つを設定します。
none
(デフォルト)website
customer_group
website_and_customer_group
例えば、web サイトごとにモードを設定するには、次のようにします。
bin/magento indexer:set-dimensions-mode catalog_product_price website
カタログ権限の並列化を使用するには、カタログ権限インデクサーで使用可能ないずれかのディメンションモードを設定します。
none
(デフォルト)customer_group
または、現在のモードを確認します。
bin/magento indexer:show-dimensions-mode
並列モードでインデックスを再作成するには、環境変数を使用して reindex コマンドを実行します MAGE_INDEXER_THREADS_COUNT
または、環境変数をに追加します env.php
ファイル。 この変数は、再インデックス処理のスレッド数を設定します。
たとえば、次のコマンドは、 Catalog Search Fulltext
3 つのスレッドにまたがるインデクサー:
MAGE_INDEXER_THREADS_COUNT=3 php -f bin/magento indexer:reindex catalogsearch_fulltext
インデクサーをリセット
すべてのインデクサーまたは特定のインデクサーのステータスを無効にするには、このコマンドを使用します。
コマンドオプション:
bin/magento indexer:reset [indexer]
ここで、 [indexer]
は、インデクサーのスペース区切りのリストです。 省略 [indexer]
すべてのインデクサーを無効にします。
結果の例:
Design Config Grid indexer has been invalidated.
Customer Grid indexer has been invalidated.
Category Products indexer has been invalidated.
Product Categories indexer has been invalidated.
Catalog Rule Product indexer has been invalidated.
Product EAV indexer has been invalidated.
Inventory indexer has been invalidated.
Catalog Product Rule indexer has been invalidated.
Stock indexer has been invalidated.
Product Price indexer has been invalidated.
Catalog Search indexer has been invalidated.
インデクサーの設定
このコマンドを使用して、次のインデクサーオプションを設定します。
- 保存時に更新(
realtime
):インデックス付きデータは、管理者で変更が加えられると更新されます。 (例えば、カテゴリ製品インデックスは、製品が管理者のカテゴリに追加された後に再インデックスされます。) これがデフォルトです。 - スケジュールで更新(
schedule
):cron ジョブで設定したスケジュールに従ってデータのインデックスが作成されます。
現在の設定を表示
現在のインデクサー設定を表示するには:
bin/magento indexer:show-mode [indexer]
ここで、 [indexer]
は、インデクサーのスペース区切りのリストです。 省略 [indexer]
すべてのインデクサーのモードを表示します。 例えば、すべてのインデクサーのモードを表示するには、次のようにします。
結果の例:
Design Config Grid: Update on Save
Customer Grid: Update on Save
Category Products: Update on Save
Product Categories: Update on Save
Catalog Rule Product: Update on Save
Product EAV: Update on Save
Inventory: Update on Save
Catalog Product Rule: Update on Save
Stock: Update on Save
Product Price: Update on Save
Catalog Search: Update on Save
インデクサーモードの設定
realtime
の代わりに schedule
. この Customer Grid は、 Update on Save オプション。 このインデックスは、 Update by Schedule
オプション。 次のコマンドラインを使用して、保存時にこのインデクサーを更新するように設定します。 php bin/magento indexer:set-mode realtime customer_grid
インデクサー設定を指定するには:
bin/magento indexer:set-mode {realtime|schedule} [indexer]
ここで、
realtime
– 保存時に更新するインデクサーを選択します。schedule
- cron スケジュールに従って保存するように、指定したインデクサーを設定します。indexer
- インデクサーのスペース区切りのリストです。 省略indexer
すべてのインデクサーを同じように設定します。
たとえば、スケジュールに従って更新するカテゴリ製品と製品カテゴリのインデクサーのみを変更するには、次のように入力します。
bin/magento indexer:set-mode schedule catalog_category_product catalog_product_category
結果の例:
Index mode for Indexer Category Products was changed from 'Update on Save' to 'Update by Schedule'
Index mode for Indexer Product Categories was changed from 'Update on Save' to 'Update by Schedule'
インデクサー関連のデータベーストリガーは、インデクサーモードがに設定されている場合に追加されます schedule
インデクサーモードがに設定されている場合に削除されます。 realtime
. インデクサーがに設定されている間に、トリガーがデータベースにない場合 schedule
、インデクサーをに変更します realtime
その後、それらをに戻します schedule
. これにより、トリガーがリセットされます。
インデクサーのステータスを設定
この bin/magento indexer:set-status
コマンドは、Adobe Commerce 2.4.7 で導入されました。これにより、管理者は 1 つ以上のインデクサーの動作ステータスを変更し、データのインポート、更新、メンテナンスなどの広範な操作中にシステムのパフォーマンスを最適化できます。
コマンド構文:
bin/magento indexer:set-status {invalid|suspended|valid} [indexer]
ここで、
invalid
- インデクサーを期限切れとマークし、中断されない限り、次回 cron 実行時にインデックス再作成を促します。suspended
- インデクサーの cron トリガーによる自動更新を一時的に停止します。 このステータスはリアルタイムモードとスケジュールモードの両方に適用され、集中的な操作中に自動更新を一時停止できます。valid
- インデクサーデータが最新であり、インデックスを再作成する必要がないことを示します。indexer
- インデクサーのスペース区切りのリストです。 省略indexer
すべてのインデクサーを同じように設定します。
例えば、特定のインデクサーを休止するには、次のように入力します。
bin/magento indexer:set-status suspended catalog_category_product catalog_product_category
結果の例:
Index status for Indexer 'Category Products' was changed from 'valid' to 'suspended'.
Index status for Indexer 'Product Categories' was changed from 'valid' to 'suspended'.
中断されたインデクサーのステータスの管理
インデクサーがに設定されている場合 suspended
ステータスは、主に自動インデックス再作成とマテリアライズド・ビューの更新に影響します。 概要を次に示します。
再インデックスはスキップされました:の自動インデックス再作成はバイパスされます suspended
インデクサーと、それを共有するすべてのインデクサー shared_index
. これにより、中断されたプロセスに関連するデータのインデックスを再作成しなくても、システムリソースを確実に節約できます。
マテリアライズド・ビュー更新のスキップ:インデックス再作成と同様に、に関連する実体化ビュー(Materialized View)の更新 suspended
インデクサーまたはその共有インデックスも一時停止されます。 このアクションにより、休止期間中のシステム負荷がさらに軽減されます。
indexer:reindex
コマンドは、としてマークされたインデクサーを含む、すべてのインデクサーのインデックスを再作成します suspended
を使用すると、自動アップデートが一時停止した際に手動でアップデートする場合に役立ちます。valid
から suspended
または invalid
注意が必要。 インデックスのないデータが蓄積されている場合は、パフォーマンスが低下する可能性があります。valid
システムのパフォーマンスとデータの整合性を維持する。