Огромное количество запросов к БД

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
AIR
Сообщения: 28
Зарегистрирован: 2014.10.31, 17:35

Огромное количество запросов к БД

Сообщение AIR »

Добрый день всем любителям Yii2.
Пишем мы проект на yii2, средней масштабности интернет магазин.
Лично я писал каталог товаров с фильтрами и прочими плюхами.
Фильтрация сделана средствами связей моделей, иногда бывает даже связь через связь.
Работает всё хорошо но если бы не одно "но".
Посмотрев в debug панель я обнаружил количество запросов отправляемых в базу
и тут мне маленько "поплохело". В общем у меня для одной страницы выполняется от 100 до
700 запросов а иногда бывает и больше. В общем вопрос такой, не помрёт ли наш MySQL при таких
количествах запросов, если на сайте будет сидеть, допустим, 500 человек одновременно.
Так как эти запросы Active Record строит сам, повлиять на них количество можно,
только перепиливанием логики.

Может вопрос и туповат, но интересно узнать мнение людей которые уже писали что-то подобное
и как держит такие нагрузки MySQL.

За ранее благодарен за ответы )))
DPRK
Сообщения: 11
Зарегистрирован: 2015.03.09, 14:55

Re: Огромное количество запросов к БД

Сообщение DPRK »

я в таком случае использовал джоины, вы видимо используете hasMany, hasOne в AR
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Огромное количество запросов к БД

Сообщение ElisDN »

Можно, например, жадную загрузку включить в AR со связями.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Огромное количество запросов к БД

Сообщение zelenin »

ситуация стандартная: таблица с датапровайдером, в ней поля, которые получаются через связи, которые по умолчанию ленивые, то есть грузятся по запросу, а не заранее. прописываем в запрос провайдера with(['имяСвязи']) и 600 запросов превращаются в 50 (цифры из последнего проекта).
AIR
Сообщения: 28
Зарегистрирован: 2014.10.31, 17:35

Re: Огромное количество запросов к БД

Сообщение AIR »

zelenin писал(а):ситуация стандартная: таблица с датапровайдером, в ней поля, которые получаются через связи, которые по умолчанию ленивые, то есть грузятся по запросу, а не заранее. прописываем в запрос провайдера with(['имяСвязи']) и 600 запросов превращаются в 50 (цифры из последнего проекта).
А если не затруднит, можно какой-то маленький примерчик использования? А то что-то не могу понять как это юзать.
Ответить