Увеличение производительности плагина NextGen Gallery

Добавляем необходимые индексы в таблицу

В случае, если галереи содержат несколько тысяч изображений, в зависимости от мощности сервера и посещаемости сайта могут возникнуть проблемы с производительностью, связанные с неоптимальностью индексов в таблице wp_ngg_pictures.

Проявляется это в том, что при отображении любой галереи MySQL приходится полностью сканировать таблицу wp_ngg_pictures.

Например:

[-]
View Code MySQL
EXPLAIN
SELECT SQL_CALC_FOUND_ROWS tt.*, t.*
FROM wp_ngg_gallery AS t INNER JOIN wp_ngg_pictures AS tt ON t.gid = tt.galleryid
WHERE t.gid = 3 AND tt.exclude<>1
ORDER BY tt.sortorder ASC
[-]
View Code Text
+----+-------------+-------+-------+---------------+---------+---------+-------+--------+----------------+
| id | select_type | table | type  | possible_keys | key     | key_len | ref   | rows   | Extra          |
+----+-------------+-------+-------+---------------+---------+---------+-------+--------+----------------+
|  1 | SIMPLE      | t     | const | PRIMARY       | PRIMARY | 8       | const |      1 | Using filesort |
|  1 | SIMPLE      | tt    | ALL   | NULL          | NULL    | NULL    | NULL  |  11700 | Using where    |
+----+-------------+-------+-------+---------------+---------+---------+-------+--------+----------------+

Исправляется ситуация путём добавления ключа по столбцам galleryid и sortorder в таблицу wp_ngg_pictures:

[-]
View Code MySQL
ALTER TABLE `wp_ngg_pictures` ADD KEY (`galleryid`, `sortorder`)

После этого EXPLAIN покажет значительно лучшую картину:

[-]
View Code Text
+----+-------------+-------+-------+---------------+-----------+---------+-------+------+-------------+
| id | select_type | table | type  | possible_keys | key       | key_len | ref   | rows | Extra       |
+----+-------------+-------+-------+---------------+-----------+---------+-------+------+-------------+
|  1 | SIMPLE      | t     | const | PRIMARY       | PRIMARY   | 8       | const |    1 |             |
|  1 | SIMPLE      | tt    | ref   | galleryid     | galleryid | 8       | const |   59 | Using where |
+----+-------------+-------+-------+---------------+-----------+---------+-------+------+-------------+

Как видим, использование правильного индекса позволяет избежать файловой сортировки; к тому же, из таблицы wp_ngg_pictures сразу выбираются только нужные данные (59 строк против 11,700 строк).

Добавить в закладки

Связанные записи

Автор: Vladimir; опубликовано в: WordPress; метки: , , ,
6
Июнь
2009

RSS Комментарии к статье «Увеличение производительности плагина NextGen Gallery» (2)  »

  1. Так что, достаточно просто выполнить запрос?

    ALTER TABLE `wp_ngg_pictures` ADD KEY (`galleryid`, `sortorder`)

    И всё?

    • В принципе, да. На сайте с десятком тысяч фотографий и кучей галерей и альбомов это позволило снизить нагрузку на MySQL.

Оставить комментарий к записи «Увеличение производительности плагина NextGen Gallery»

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Изображения должны быть включены!

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя