оптимизация запросов к базе данных

Karamazoff

Новичок
Регистрация
24 Ноя 2017
Сообщения
4
Реакции
0
Баллы
1
Доброго времени суток. вчера мой сайт перестал работать. Я сразу же написал в поддержку хостинга. Вот их ответ.

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

SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE approve=1 ORDER BY news_read LIMIT 0,12;

В данном запросе сразу несколько проблем:

  1. У Вас есть индекс по approve, однако абсолютно у всех записей значение этого поля равно 1, то есть этот индекс (как и where в запросе) нисколько не помогает.
  2. Вы используете ORDER BY в случае, когда при запросе не может применяться индекс: поле в WHERE не соответствует полю, по которому производится сортировка. Данный случай и принципы оптимизации запросов order by описаны в том числе официальном руководстве по MySQL.
  3. Из-за предыдущих двух проблем БД сканирует 29329 строк для выполнения запроса, после чего сортирует их, создавая для этого временную таблицу, что тоже, очевидно, не повышает производительность.
Для решения проблемы Вам необходимо оптимизировать запросы к базе данных.
Ну и на почту еще вот что:
Превышение нагрузки
На вашем сайте было зафиксировано серьёзное превышение лимитов по нагрузке. График нагрузки на аккаунт вы можете наблюдать в панели управления вашего аккаунта, раздел "Статистика".
Для противодействия нагрузке мы немного изменили настройки веб-сервера таким образом, чтобы без поддержи Cookie (и Javascript) клиенты не могли заходить на сайт и генерировать нагрузку. Естественно, в исключения добавлены поисковые роботы Google, Yandex, SeoPult, Робокассы, а также некоторые другие.
 Также, результаты запросов кэшируются на пять минут, результат ошибки 404 - на одну минуту. Не кэшируются страницы с куки session и nocache, а также страницы с авторизацией средствами веб-сервера.

Пишу здесь, так как вообще не знаю как оптимизировать эти запросы. Для меня это "темный лес"
Надеюсь на помощь, конечно.
Заранее спасибо!!!
 

Артур

VIP
VIP
Прошёл марафон
Регистрация
17 Мар 2017
Сообщения
52
Реакции
10
Баллы
8
Кто какой вид кеширования использует на сайте (файловый или мемкеш)?
И еще кто-нибудь использует для киносайтов nginx+php-fpm?
 

PunPun

Coder
Команда форума
Приватовец
Регистрация
23 Фев 2017
Сообщения
618
Реакции
402
Баллы
63
В dle нет поддержки redis. Да и redis vs memcached почти одинаковы. И так извращаться для какого-то кино сайта который проживет пару месяцев, стоит ли оно того?
 

Артур

VIP
VIP
Прошёл марафон
Регистрация
17 Мар 2017
Сообщения
52
Реакции
10
Баллы
8
@PunPun, Стоит переходить на nginx+php-fpm?
 

Артур

VIP
VIP
Прошёл марафон
Регистрация
17 Мар 2017
Сообщения
52
Реакции
10
Баллы
8
@PunPun, php 7.0 + fastcgi на апаче и nginx. Плюс начал использовать кеш. 2гб оперативы и посещаемость 20-25к. Вот думаю как оптимизировать нагрузку.
 

PunPun

Coder
Команда форума
Приватовец
Регистрация
23 Фев 2017
Сообщения
618
Реакции
402
Баллы
63

anime

Гуру
Кодер
Регистрация
13 Мар 2017
Сообщения
129
Реакции
50
Баллы
28
В dle нет поддержки redis. Да и redis vs memcached почти одинаковы. И так извращаться для какого-то кино сайта который проживет пару месяцев, стоит ли оно того?
Возможно и не стоит, но я использую его и очень доволен результатам.
 
Сверху Снизу