ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Добавление индекса MySQL в таблице WordPress wp_options

Добавление индекса MySQL в таблице WordPress wp_options

Таблица wp_options может быть очень раздутой из – за все настроек, размещенных там по темам и плагинам. Приходиться иногда чистить таблицы для своих клиентов,  чтобы ускорить приборную панель WP-администратора. Если вы используете плагин, который хранит много переходных или сеансовые данных в таблице параметров, то есть два способа ускорить: использование кэша объектов и добавление индекса MySQL. Решение кэша объектов поставит таблицу параметров в демон, как Redis или Memcached, поэтому значения могут быть выбраны из оперативной памяти. Другим решением является добавление индекса к таблице wp_options таким образом, чтобы найти соответствующие варианты, которые занимают меньше времени (индекс MySQL аналогичен индексу в большой книге).

В этом посте мы покажем вам, как узнать, существует ли индекс, является ли индекс хорошей идеей, и, наконец, как добавлять и удалять индекс wp_options, чтобы увидеть, как он улучшает производительность. Мы рекомендуем использовать New Relic (https://newrelic.com) для измерения времени запросов к базе данных, если это возможно.

Добавление индекса MySQL в таблице WordPress wp_options

Во-первых выяснить, существует ли индекс, измените wp_options в случае, если вы изменили префикс базы данных в wp-config.php или с плагином.

Вы можете запустить эти команды из PhpMyAdmin, Adminer или с помощью wp-cli для команд запроса в базе данных.

SHOW INDEX FROM wp_options;

 

Если вы видите только таблицу ниже, то нет индекса присутствует

+------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
|   Table    | Non_unique |  Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| wp_options |          0 | PRIMARY     |            1 | option_id   | A         |         511 | NULL     | NULL   |      | BTREE      |         |               |
| wp_options |          0 | option_name |            1 | option_name | A         |         511 | NULL     | NULL   |      | BTREE      |         |               |
+------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

 

Но если вы видите, индекс column_name с величиной autoload или что – то подобное, то у вас уже есть индекс.

+------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
|   Table    | Non_unique |  Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| wp_options |          0 | PRIMARY     |            1 | option_id   | A         |         670 | NULL     | NULL   |      | BTREE      |         |               |
| wp_options |          0 | option_name |            1 | option_name | A         |         670 | NULL     | NULL   | YES  | BTREE      |         |               |
| wp_options |          1 | autoload    |            1 | autoload    | A         |           1 | NULL     | NULL   |      | BTREE      |         |               |
+------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

 

Ярлык для листинга индексов

SHOW INDEX FROM wp_options WHERE column_name != 'option_id' AND column_name != 'option_name';

 

Во- первых выяснить, хорошая ли идея, чтобы добавить индекс в таблицу wp_optins путем сравнения количества строк autoload = yes с количеством строк autoload = no

SELECT COUNT(CASE WHEN autoload = 'yes' THEN 1 END) FROM wp_options;

 

Узнайте, сколько не автозагружаются

SELECT COUNT(CASE WHEN autoload = 'no' THEN 1 END) FROM wp_options;

 

Как правило, вы хотите, чтобы число вариантов autoload = no значительно перевешало вариантов autoload = yes

CREATE INDEX autoload ON wp_options(autoload, option_name);

 

Если вы используете New Relic, вы можете увидеть улучшение времени запросов, обратите внимание, как коричневый участок практически исчезает где то в 8 утра на графике!

Добавление индекса MySQL в таблице WordPress wp_options

Если вы хотите, удалить индекс, то этот оператор удалит индекс MySQL для таблицы wp_options

DROP INDEX autoload ON wp_options

 

Exit mobile version