В нашей производственной среде я замечаю спорадическую медленную производительность для одного из запросов.Magento core_url_rewrite sporadic performance
SELECT `core_url_rewrite`.*
FROM `core_url_rewrite`
WHERE (request_path IN (:path?, :path?, :path?, :path?))
AND (store_id IN(?, ?))
Explain Plan от производства сервера:
id: 1
select_type: SIMPLE
table: core_url_rewrite
type: range
possible_keys: UNQ_CORE_URL_REWRITE_REQUEST_PATH_STORE_ID,IDX_CORE_URL_REWRITE_STORE_ID
key: UNQ_CORE_URL_REWRITE_REQUEST_PATH_STORE_ID
key_len: 770
ref: NULL
rows: 4
Extra: Using index condition
Mysql версия: 5.6.34. Количество строк в таблице: 473847. Обычно оно выполняется менее чем за 1 мс, но некоторые из Tx в соответствии с новой реликвией: 8.03s, 5.35s, 3.04s, 2.97s, 1.92s за последние 30 минут.
Создать таблицу является:
CREATE TABLE `core_url_rewrite` (
`url_rewrite_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Rewrite Id',
`store_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Store Id',
`id_path` varchar(255) DEFAULT NULL COMMENT 'Id Path',
`request_path` varchar(255) DEFAULT NULL COMMENT 'Request Path',
`target_path` varchar(255) DEFAULT NULL COMMENT 'Target Path',
`is_system` smallint(5) unsigned DEFAULT '1' COMMENT 'Defines is Rewrite System',
`options` varchar(255) DEFAULT NULL COMMENT 'Options',
`description` varchar(255) DEFAULT NULL COMMENT 'Deascription',
`category_id` int(10) unsigned DEFAULT NULL COMMENT 'Category Id',
`product_id` int(10) unsigned DEFAULT NULL COMMENT 'Product Id',
PRIMARY KEY (`url_rewrite_id`),
UNIQUE KEY `UNQ_CORE_URL_REWRITE_REQUEST_PATH_STORE_ID` (`request_path`,`store_id`),
UNIQUE KEY `UNQ_CORE_URL_REWRITE_ID_PATH_IS_SYSTEM_STORE_ID` (`id_path`,`is_system`,`store_id`),
KEY `IDX_CORE_URL_REWRITE_TARGET_PATH_STORE_ID` (`target_path`,`store_id`),
KEY `IDX_CORE_URL_REWRITE_ID_PATH` (`id_path`),
KEY `IDX_CORE_URL_REWRITE_STORE_ID` (`store_id`),
KEY `FK_CORE_URL_REWRITE_CTGR_ID_CAT_CTGR_ENTT_ENTT_ID` (`category_id`),
KEY `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_CATEGORY_ENTITY_ENTITY_ID` (`product_id`),
CONSTRAINT `FK_CORE_URL_REWRITE_CTGR_ID_CAT_CTGR_ENTT_ENTT_ID` FOREIGN KEY (`category_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_CATEGORY_ENTITY_ENTITY_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_CORE_URL_REWRITE_STORE_ID_CORE_STORE_STORE_ID` FOREIGN KEY (`store_id`) REFERENCES `core_store` (`store_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=95984103 DEFAULT CHARSET=utf8 COMMENT='Url Rewrites'
Что означает ': путь? '? Почему это отличается от '?'? Можете ли вы показать нам запрос после того, как были сделаны замены? Пожалуйста, предоставьте 'SHOW CREATE TABLE core_url_rewrite'. –
Попытайтесь получить значение «EXPLAIN» со значениями, когда оно медленное. И/или используйте slowlog для выполнения этой задачи - 'long_query_time = 1', включите медленный журнал, дождитесь его, а затем посмотрите в slowlog. –
@RickJames, ниже - запрос с подстановками: SELECT 'core_url_rewrite'. * FROM' core_url_rewrite' WHERE (request_path IN ('newarrivals? Cat = 3', 'newarrivals /? Cat = 3', 'newarrivals', 'newarrivals /')) AND (store_id IN (0, 1)) – Arvind