mySQL のスロー クエリ ログを有効にして、実行に 10 秒以上かかるスロー クエリを観察しました。その後、mysql.slow_log テーブルに記録されているクエリが 1 つだけ見つかりました。あれは:
SELECT `e`.*, IF(at_is_active.value_id > 0, at_is_active.value, at_is_active_default.value) AS `is_active`, IF(at_include_in_menu.value_id > 0, at_include_in_menu.value, at_include_in_menu_default.value) AS `include_in_menu`, `core_url_rewrite`.`request_path` FROM `catalog_category_entity` AS `e`
INNER JOIN `catalog_category_entity_int` AS `at_is_active_default`
ON (`at_is_active_default`.`entity_id` = `e`.`entity_id`)
AND (`at_is_active_default`.`attribute_id` = '42')
AND `at_is_active_default`.`store_id` = 0
LEFT JOIN `catalog_category_entity_int` AS `at_is_active`
ON (`at_is_active`.`entity_id` = `e`.`entity_id`)
AND (`at_is_active`.`attribute_id` = '42')
AND (`at_is_active`.`store_id` = 1)
INNER JOIN `catalog_category_entity_int` AS `at_include_in_menu_default`
ON (`at_include_in_menu_default`.`entity_id` = `e`.`entity_id`)
AND (`at_include_in_menu_default`.`attribute_id` = '67')
AND `at_include_in_menu_default`.`store_id` = 0
LEFT JOIN `catalog_category_entity_int` AS `at_include_in_menu`
ON (`at_include_in_menu`.`entity_id` = `e`.`entity_id`)
AND (`at_include_in_menu`.`attribute_id` = '67')
AND (`at_include_in_menu`.`store_id` = 1)
LEFT JOIN `core_url_rewrite`
ON (core_url_rewrite.category_id=e.entity_id)
AND (core_url_rewrite.is_system=1
AND core_url_rewrite.product_id IS NULL AND core_url_rewrite.store_id='1'
AND id_path LIKE 'category/%')
WHERE (`e`.`entity_type_id` = '3')
AND (`e`.`entity_id` IN('####HERE ARE SOME IDs####'))
AND (IF(at_is_active.value_id > 0, at_is_active.value, at_is_active_default.value) = '1')
AND (IF(at_include_in_menu.value_id > 0, at_include_in_menu.value, at_include_in_menu_default.value) = '1')
また、CPU 使用率が高くなります。同じ時間にログ時間と CPU 監視曲線を観察したところ、それがわかりました。9/10時間のギャップの後に頻繁に発生しています。このクエリの実行を担当する設定を変更できるように、magento によってこのクエリが呼び出された/実行されたときに、私を助けてもらえますか?