2017-08-02 4 views
0

ソフトウェアが発生します。私は完全なURLのインデックスを実行すると、それは非常にかかります :Magentoのコミュニティ フラットカテゴリ検索は、問題のMagentoのURLインデクサカテゴリでスロークエリをjoinLeft/Flat.phpは、サイトの停止

説明を有効に完了までに長い時間がかかることがありますが、これは状況によっては正常であると理解しています。これは私が尋ねる問題ではありません。インデクサが実行されている間、ブロックキャッシュは連続的に無効になります。この場合、Magentoはフラットカテゴリテーブルからメニューを再構築し、URL書き換えテーブルに結合しようとします。これは、魔道士/カタログ/モデル/リソース/カテゴリ/ Flat.php

インデクサ実行中には、このクエリを繰り返しmysqlクライアント接続に表示 ファイル内のコアの一部です。

SELECT `main_table`.`entity_id`, main_table.`name`, main_table.`path`, `main_table`.`is_active`, `main_table`.`is_anchor`, `url_rewrite`.`request_path`, `main_table`.`url_override`, `main_table`.`display_subcategories` 
FROM `catalog_category_flat_store_19` AS `main_table` 
LEFT JOIN `core_url_rewrite` AS `url_rewrite` ON url_rewrite.category_id=main_table.entity_id AND url_rewrite.is_system=1 AND url_rewrite.product_id IS NULL AND url_rewrite.store_id='19' AND url_rewrite.id_path LIKE 'category/%' 
WHERE (main_table.is_active = '1') AND (main_table.include_in_menu = '1') AND (main_table.path like '1/1877/%') AND (`level` <= 3) 
ORDER BY `main_table`.`position` ASC 

このクエリはjoinLeftのために非常に遅いです。この結合は、上記のファイルで定義されています。インデクサーが実行されている場合、このクエリはタイムアウトします。接続はサーバー上に構築され、すべて同じクエリーを実行してナビゲーションメニューを再構築しようとします。

joinLeftではなくjoinInnerにクエリを変更すると、すぐに問題が解決します。私は左の結合の目的を理解していません。なぜなら、この表に値がない可能性は非常に低いと思うからです。もしそうでなければ、このカテゴリーを表示したくないかもしれません。

この問題のレポートは他にもいくつかありますが、インデックスやキャッシュの実行中に一般的なパフォーマンスの問題が発生した場合、すぐに解消されます。

通常の時間内に各テーブルを個別に完全に選択できるため、このクエリが非常に異なる動作をする理由を理解できません。インデクサと結合された左側の結合でのみ、この問題が発生します。一般的に、これは遅いクエリであることを理解してください。

質問:左の結合についての情報を提供してください。その理由は、その結合が非常に遅いためです。私の問題を解決するためのソリューションもお勧めできますか?

+0

です。インデクサはすぐにキャッシュを無効にするので、navブロックがキャッシュに入っていない間に入って来るすべてのフロントエンド要求は、それぞれを再構築しようとします(Magento 1.Xのデフォルトのナビゲーションブロックで実行されるクエリは高価です) 。この問題はMagento 2および3rdパーティーの拡張機能では、ナビゲーションHTMLを生成し、他の場所にキャッシュ/格納し、再生時にのみ更新することで回避されます。インデクサの場合は、データが更新された後にのみ無効化され、実行前では無効化されます。 – CCoffee

答えて

0

この問題は、Magentoのこのバージョンでは単なる問題のクエリであるために発生します。 Communityの後のバージョンでは、このメソッド/クエリが左結合を持たないように書き直されています。

ブロックキャッシュが無効化され、メニューが再生成されているが、報告された主な問題が解決されるという問題がまだ残っています。参照で

機能は、ここで起こって多くのものがありますが、ファイルメイジ/カタログ/モデルのgetParentCategories /リソース/カテゴリ/ Flat.php