Кол-во обращений к базе

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Кол-во обращений к базе

Сообщение drag0n »

Всем привет!

Хотел бы про консультироваться
У меня один раз в месяц пока получается вот такое кол-во обращений к БД

Изображение

Будет увеличиваться - это много ???

А вообще какое кол-во обращение уже критично ???
kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: Кол-во обращений к базе

Сообщение kawabanga »

Не критично, но по возможности уменьшайте.

Используйте жадную загрузку.
Model::find()->with('Relation');

Используйте подгрузку данных заранее.
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Кол-во обращений к базе

Сообщение Alexum »

Так же учитывайте, что в режиме отладки тратятся ресурсы на логирование. В вашем случае это может быть генерация data-файла в ~70-100мб.
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: Кол-во обращений к базе

Сообщение dmg »

Если раз в месяц предположу, что истекает duration cache. Например SchemaCacheDuration.
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: Кол-во обращений к базе

Сообщение caHek2x »

скорее всего автор имеет ввиду что страница с этим запросом "отчетом" нужная раз в месяц
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кол-во обращений к базе

Сообщение drag0n »

caHek2x писал(а): 2017.07.20, 12:14 скорее всего автор имеет ввиду что страница с этим запросом "отчетом" нужная раз в месяц
Ты прав
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кол-во обращений к базе

Сообщение drag0n »

kawabanga писал(а): 2017.07.20, 10:21 Не критично, но по возможности уменьшайте.

Используйте жадную загрузку.
Model::find()->with('Relation');

Используйте подгрузку данных заранее.
по возможности использую, где возможно
в базе пока 500 человек приходится минимум 6 раз пройтись
и плюс нюансы всякие (подсчеты, расчеты, начисления)
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: Кол-во обращений к базе

Сообщение dmg »

drag0n писал(а): 2017.07.20, 12:33
caHek2x писал(а): 2017.07.20, 12:14 скорее всего автор имеет ввиду что страница с этим запросом "отчетом" нужная раз в месяц
Ты прав
Ясно. Не понял сразу. Возможно, в случае предполагаемого роста, имеет смысл расчёты делать после изменения данных и вести в отдельных таблицах. Или сделать view в BD.
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: Кол-во обращений к базе

Сообщение caHek2x »

тут суть вопроса странная )
есть отчет с кучей запросов - это смущает ...
в личку скинул вариант решения чтоб запросов было минимум ...
но его как я понял ты применять пока не хочешь ...

тогда в чем суть этого вопроса ?) ну либо смирись с такой нагрузкой (сервер не сгорит просто в момент выборки может чтото будет подтормаживать ... да и прийдется немного ждать на построение отчета ) либо сделать его по нормальному :-)
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кол-во обращений к базе

Сообщение drag0n »

dmg писал(а): 2017.07.20, 12:45
drag0n писал(а): 2017.07.20, 12:33
caHek2x писал(а): 2017.07.20, 12:14 скорее всего автор имеет ввиду что страница с этим запросом "отчетом" нужная раз в месяц
Ты прав
Ясно. Не понял сразу. Возможно, в случае предполагаемого роста, имеет смысл расчёты делать после изменения данных и вести в отдельных таблицах. Или сделать view в BD.
Я уже думал, не получается
мне нужно проверить достижения каждого человека, у каждого человека свой уровень достижения
уровень1
уровень2
уровень3
уровень4
уровень5
уровень6

если он достиг уровня 2, то он переходит на уровень 2
если уровень 3, то переходит на 3

и кто муже каждый уровень зависит от предыдущего
т.е.
уровень 2 зависит от уровня 1
уровень 3 зависит от уровня 2
уровень 4 зависит от уровня 2
и т.д.

и плюс расчеты на каждом уровне меняются
:?
Аватара пользователя
Faenir
Сообщения: 292
Зарегистрирован: 2010.01.06, 01:46
Откуда: Симферополь

Re: Кол-во обращений к базе

Сообщение Faenir »

caHek2x писал(а): 2017.07.20, 12:48 в личку скинул вариант решения чтоб запросов было минимум ...
Зачем в личку то? Совершенно секретно?)
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кол-во обращений к базе

Сообщение drag0n »

caHek2x писал(а): 2017.07.20, 12:48 в личку скинул вариант решения чтоб запросов было минимум ...
Это уже другой вопрос , о достижениях каждого партнера
kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: Кол-во обращений к базе

Сообщение kawabanga »

Мне задание однажды ставили, отчет о текущем балансе подконтрольных организаций.
Ну ок, забираю всех пользователей, считаю у каждого баланс, и выходило 4К запросов. Нереально много.
Я не ожидал, что у компании столько подконтрольных организаций. (около 1К) , скорость загрузки страницы около 10секунд.
Это было недопустимо.

Пришлось переписать под sql, и все ограничилось 5! sql запросами. да, сложными, но запрос на базу занял всего 180мс.

В вашем случае, если хотите ускорить быстродействие текущие страницы, стройте сложный расчет на sql, и сразу забирайте данные о партнерах.
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кол-во обращений к базе

Сообщение drag0n »

kawabanga писал(а): 2017.07.20, 13:19 Мне задание однажды ставили, отчет о текущем балансе подконтрольных организаций.
Ну ок, забираю всех пользователей, считаю у каждого баланс, и выходило 4К запросов. Нереально много.
Я не ожидал, что у компании столько подконтрольных организаций. (около 1К) , скорость загрузки страницы около 10секунд.
Это было недопустимо.

Пришлось переписать под sql, и все ограничилось 5! sql запросами. да, сложными, но запрос на базу занял всего 180мс.

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

Как я могу забрать сразу я же написал мне нужно каждого проверить (сейчас пока 500 человек) на уровень 1,
потом тоже самое на уровень 2,
потом на уровень 3
и.т.д.

и конечный результат на 6 уровне (потому что я не знаю на текущей момент на каком уровне он будет)
и на последнем уровне уже определяюсь кто какого уровня достиг
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: Кол-во обращений к базе

Сообщение caHek2x »

Faenir писал(а): 2017.07.20, 12:55
caHek2x писал(а): 2017.07.20, 12:48 в личку скинул вариант решения чтоб запросов было минимум ...
Зачем в личку то? Совершенно секретно?)
нет просто мы до этого с ним в личке обсуждали этот вопрос ... поэтому и решение в личке )
drag0n писал(а): 2017.07.20, 12:59
caHek2x писал(а): 2017.07.20, 12:48 в личку скинул вариант решения чтоб запросов было минимум ...
Это уже другой вопрос , о достижениях каждого партнера
решается так же как и тот пример ... :-)
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кол-во обращений к базе

Сообщение drag0n »

Хорошо на foreach попробую переделать, большинство запросов
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Кол-во обращений к базе

Сообщение Alexum »

Одним запросом можно получить всех пользователей с их показателями и текущим уровнем. Вторым запросом таблицу уровней с пороговыми значениями. В PHP определяете до какого уровня дошёл пользователь. После пересчёта группируете пользователей по достигнутым уровням и для каждого уровня делаете один групповой UPDATE, где id пользователей указываете в IN ( id_пользователя_1, id_пользователя_2). Скорее всего не знаю каких-то ваших нюансов, т.к. не понимаю, зачем для проверки перехода между каждым уровнем делать отдельные запросы.
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кол-во обращений к базе

Сообщение drag0n »

Alexum писал(а): 2017.07.20, 13:52 Одним запросом можно получить всех пользователей с их показателями и текущим уровнем. Вторым запросом таблицу уровней с пороговыми значениями. В PHP определяете до какого уровня дошёл пользователь. После пересчёта группируете пользователей по достигнутым уровням и для каждого уровня делаете один групповой UPDATE, где id пользователей указываете в IN ( id_пользователя_1, id_пользователя_2). Скорее всего не знаю каких-то ваших нюансов, т.к. не понимаю, зачем для проверки перехода между каждым уровнем делать отдельные запросы.
Не все пойму то что вы написали, есть пример?
или по подробней можете сказать?
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Кол-во обращений к базе

Сообщение Alexum »

drag0n писал(а): 2017.07.20, 14:02 Не все пойму то что вы написали, есть пример?
или по подробней можете сказать?
Сперва в общих чертах поясните, что делают эти 8153 запроса.
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: Кол-во обращений к базе

Сообщение dmg »

drag0n писал(а): 2017.07.20, 12:55
dmg писал(а): 2017.07.20, 12:45
drag0n писал(а): 2017.07.20, 12:33

Ты прав
Ясно. Не понял сразу. Возможно, в случае предполагаемого роста, имеет смысл расчёты делать после изменения данных и вести в отдельных таблицах. Или сделать view в BD.
Я уже думал, не получается
мне нужно проверить достижения каждого человека, у каждого человека свой уровень достижения
уровень1
уровень2
уровень3
уровень4
уровень5
уровень6

если он достиг уровня 2, то он переходит на уровень 2
если уровень 3, то переходит на 3

и кто муже каждый уровень зависит от предыдущего
т.е.
уровень 2 зависит от уровня 1
уровень 3 зависит от уровня 2
уровень 4 зависит от уровня 2
и т.д.

и плюс расчеты на каждом уровне меняются
:?
В чём разница раз в месяц проверять всех или при изменении у каждого?. Тем более так у вас всегда бкдет актуальная информация.
Ответить