Медленные запросы в Amazon Aurora с индексом (база данных Wordpress)

У меня есть экземпляр базы данных Aurora с некоторыми проблемами производительности. Один особенно странный. У меня есть установка WordPress со стандартной таблицей wp_options. В этой таблице я добавил индекс для столбца автозагрузки. Схема ниже:

CREATE TABLE IF NOT EXISTS `wp_options` (
`option_id` bigint(20) unsigned NOT NULL,
`option_name` varchar(64) NOT NULL DEFAULT '',
`option_value` longtext NOT NULL,
`autoload` varchar(20) NOT NULL DEFAULT 'yes'
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1045503 ;
ALTER TABLE `wp_options` ADD PRIMARY KEY (`option_id`), ADD UNIQUE KEY `option_name` (`option_name`), ADD KEY `index_autoload` (`autoload`);

Странно то, что я вижу много таких запросов в медленном журнале: SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'

Бежать можно даже целую минуту. У меня их много каждый день. Единственный намек, который у меня есть, это (относительно) большое количество строк, которое составляет 6602 строки. 5913 строк имеют автозагрузку = "да"

Размер таблицы 26,2 МБ.


person Sante Rotondi    schedule 05.10.2016    source источник
comment
5319 автозагрузка параметров WordPress? Святая корова, это огромное число! Вы можете просмотреть свои плагины и посмотреть, какой из них делает это.   -  person O. Jones    schedule 05.10.2016
comment
Конечно, это так, но я считаю, что сервер с 30 ГБ памяти, делающий только это, на SSD, как Amazon Aurora, должен работать лучше.   -  person Sante Rotondi    schedule 05.10.2016


Ответы (2)


Я рад, что ты вычистил мусор из своей базы данных.

Созданный вами индекс не поможет, потому что он имеет очень низкую кардинальность. Этот столбец имеет только два возможных значения в типичной установке WordPress. Таким образом, планировщик запросов, вероятно, по-прежнему будет выполнять полное сканирование таблицы и игнорировать индекс.

Немного лучшим индексом для этого конкретного запроса может быть (autoload, option_name, option_value). Это покрывающий индекс. Запрос может быть полностью удовлетворен из индекса, что экономит немного времени на сервере. Но, наверное, не в вашем случае.

Частично снижение производительности запросов WordPress связано с неизбежными временными затратами на передачу данных с компьютера с СУБД на хост WordPress. Никакое количество большого железа ни на стороне СУБД, ни на стороне WordPress не сделает для этого многого.

person O. Jones    schedule 05.10.2016

Проблема решена удалением большого количества строк

person Sante Rotondi    schedule 05.10.2016