Статьи

MySQL твик для оптимизации Magento

Magento — это мощное решение для электронной коммерции, которое обещает производительность и масштабируемость. Это идеально подходит для розничных торговцев, которые хотят быстро расти, или для тех, кто уже имеет значительное присутствие в Интернете. Программное обеспечение предоставляет комплексное решение для веб-сайта вместе с плагинами и расширениями, которые могут расширить ваш сайт электронной коммерции с помощью инвентаря любого размера.

Однако, как бесплатная система управления контентом с открытым исходным кодом, такая как WordPress, она содержит те же проблемы конфликтующих скриптов и перегрузки базы данных. Для разработчиков важно знать об этом, потому что клиенты ожидают не только веб-сайтов, которые работают, но и сайтов, которые работают хорошо.

Ввиду сложности Magento, в одной статье не описываются все области, о которых вам нужно знать, чтобы ваш сайт приносил мгновенные результаты. Тем не менее, правильная конфигурация вашего сервера баз данных MySQL — это та область, которая может значительно ускорить Magento.

Запросы к базе данных

Базы данных лежат в основе Magento, как и любой розничный бизнес. Базы данных хранят ваш инвентарь, с информацией о размере, цвете и наличии. Они также хранят ваши цены, информацию о ваших расходах и доходах, информацию о клиентах и ​​многое другое.

Все это означает, что независимо от того, использует ли клиент веб-витрину или вы работаете в области администрирования, Magento будет выполнять множество операций доступа к базе данных и чтения, и во многих случаях они будут выполнять одинаковые запросы каждый раз, когда страница просматривается с небольшими изменениями в запросах с течением времени.

Работа, которую Magento выполняет в базе данных, начинается с разбора запроса с последующим извлечением данных с носителя. Слишком много запросов замедлит доступ к серверу.
Одним из способов решения этой проблемы является встроенный в MySQL параметр конфигурации, известный как query_cache_size. Это позволяет базе данных хранить результаты запроса в памяти, а не на носителе — в конечном счете, гораздо более быстрый маршрут доступа.

Сколько запросов Magento может хранить в этом кэше, зависит от объема памяти, доступной на вашем сервере базы данных MySQL. В большинстве распространенных сред хостинга это будет около 64 МБ в качестве оперативной памяти. Что касается результатов запросов к базе данных, это очень большая сумма.

Один ранний сайт электронной коммерции, который я создал для Nu Profile, содержал более 70 000 продуктов и вариаций. Когда мы включили кеш запросов, производительность увеличилась более чем в 10 раз. В целом, прирост производительности будет на 100-1000% на большинстве сайтов, использующих кеш запросов базы данных.

Сайт Nu Profile также показал, что в базе данных о продуктах, насчитывающей более 70 000, не кэшированный запрос возвращался за 11 секунд. После запроса и сохранения в кеше он возвращается всего за одну секунду.

Специальные серверы

Даже если у вас включен кеш запросов, в зависимости от среды вашего хостинга, он будет очищаться при каждом перезапуске сервера MySQL. Это означает, что после каждого перезапуска серверов его придется перестраивать по запросу с нуля.

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

Как настроить кеширование запросов

Чтобы настроить кэш запросов базы данных MySQL, вам необходимо получить доступ к командной строке MySQL в области панели управления среды хостинга. В командной строке введите следующую команду:

mysql> SHOW VARIABLES LIKE 'have_query_cache';

Это должно вернуть следующее:

 +------------------+----------+
| Variable_name    | Value    |
+------------------+----------+
| have_query_cache | YES      |
+------------------+----------+

Что вы заметите, так это то, что свойство have_query_cache будет установлено в YES. Это не обязательно означает, что кеширование запросов включено, поскольку в стандартном двоичном файле MySQL это значение всегда YES. Чтобы убедиться, что кэш запросов действительно работает, введите в командной строке следующую команду:

 mysql> SHOW VARIABLES LIKE 'query_cache_size';

Результат показывает респектабельные 64 МБ, доступные для кэша запросов.

 +------------------+----------+
| Variable_name    | Value    |
+------------------+----------+
| query_cache_size | 67108864 | 
+------------------+----------+
1 row in set (0.00 sec)

Если кеш отключен, запрос вернет следующее:

 +------------------+----------+
| Variable_name    | Value    |
+------------------+----------+
| query_cache_size | 0        | 
+------------------+----------+
1 row in set (0.00 sec)

Относительно просто внести необходимые изменения, чтобы включить кэш запросов, если у вас есть права доступа root. Откройте файл my.conf в текстовом редакторе, найдите раздел [mysqld]

 query_cache_size=32M

Настройка кэша запросов MySQL и обеспечение его на выделенном сервере — это два наиболее важных улучшения производительности, которые вы можете сделать, чтобы повысить скорость своих сайтов электронной коммерции на основе Magento. Это также относительно просто реализовать.

Однако есть другие параметры, которые вы должны учитывать при настройке сервера MySQL. К ним относятся «query_cache_type», «query_cache_min_res_unit» и «query_cache_limit». Важно ознакомиться со всеми этими параметрами конфигурации перед реализацией конфигурации кэша запросов.

При первом запуске предприятия электронной коммерции с использованием Magento подобные настройки могут не иметь большого значения для опыта ваших клиентов. Однако по мере роста вашего веб-сайта, когда запросы к базе данных начинают засорять вашу систему, вам нужно будет рассмотреть эти области, чтобы устранить проблемы с производительностью.