Кол-во обращений к базе
Re: Кол-во обращений к базе
Не критично, но по возможности уменьшайте.
Используйте жадную загрузку.
Model::find()->with('Relation');
Используйте подгрузку данных заранее.
Используйте жадную загрузку.
Model::find()->with('Relation');
Используйте подгрузку данных заранее.
Re: Кол-во обращений к базе
Так же учитывайте, что в режиме отладки тратятся ресурсы на логирование. В вашем случае это может быть генерация data-файла в ~70-100мб.
Re: Кол-во обращений к базе
Если раз в месяц предположу, что истекает duration cache. Например SchemaCacheDuration.
Re: Кол-во обращений к базе
скорее всего автор имеет ввиду что страница с этим запросом "отчетом" нужная раз в месяц
Re: Кол-во обращений к базе
по возможности использую, где возможно
в базе пока 500 человек приходится минимум 6 раз пройтись
и плюс нюансы всякие (подсчеты, расчеты, начисления)
Re: Кол-во обращений к базе
Ясно. Не понял сразу. Возможно, в случае предполагаемого роста, имеет смысл расчёты делать после изменения данных и вести в отдельных таблицах. Или сделать view в BD.
Re: Кол-во обращений к базе
тут суть вопроса странная )
есть отчет с кучей запросов - это смущает ...
в личку скинул вариант решения чтоб запросов было минимум ...
но его как я понял ты применять пока не хочешь ...
тогда в чем суть этого вопроса ?) ну либо смирись с такой нагрузкой (сервер не сгорит просто в момент выборки может чтото будет подтормаживать ... да и прийдется немного ждать на построение отчета ) либо сделать его по нормальному
есть отчет с кучей запросов - это смущает ...
в личку скинул вариант решения чтоб запросов было минимум ...
но его как я понял ты применять пока не хочешь ...
тогда в чем суть этого вопроса ?) ну либо смирись с такой нагрузкой (сервер не сгорит просто в момент выборки может чтото будет подтормаживать ... да и прийдется немного ждать на построение отчета ) либо сделать его по нормальному
Re: Кол-во обращений к базе
Я уже думал, не получается
мне нужно проверить достижения каждого человека, у каждого человека свой уровень достижения
уровень1
уровень2
уровень3
уровень4
уровень5
уровень6
если он достиг уровня 2, то он переходит на уровень 2
если уровень 3, то переходит на 3
и кто муже каждый уровень зависит от предыдущего
т.е.
уровень 2 зависит от уровня 1
уровень 3 зависит от уровня 2
уровень 4 зависит от уровня 2
и т.д.
и плюс расчеты на каждом уровне меняются
Re: Кол-во обращений к базе
Мне задание однажды ставили, отчет о текущем балансе подконтрольных организаций.
Ну ок, забираю всех пользователей, считаю у каждого баланс, и выходило 4К запросов. Нереально много.
Я не ожидал, что у компании столько подконтрольных организаций. (около 1К) , скорость загрузки страницы около 10секунд.
Это было недопустимо.
Пришлось переписать под sql, и все ограничилось 5! sql запросами. да, сложными, но запрос на базу занял всего 180мс.
В вашем случае, если хотите ускорить быстродействие текущие страницы, стройте сложный расчет на sql, и сразу забирайте данные о партнерах.
Ну ок, забираю всех пользователей, считаю у каждого баланс, и выходило 4К запросов. Нереально много.
Я не ожидал, что у компании столько подконтрольных организаций. (около 1К) , скорость загрузки страницы около 10секунд.
Это было недопустимо.
Пришлось переписать под sql, и все ограничилось 5! sql запросами. да, сложными, но запрос на базу занял всего 180мс.
В вашем случае, если хотите ускорить быстродействие текущие страницы, стройте сложный расчет на sql, и сразу забирайте данные о партнерах.
Re: Кол-во обращений к базе
Баланс это баланс там уровней нетkawabanga писал(а): ↑2017.07.20, 13:19 Мне задание однажды ставили, отчет о текущем балансе подконтрольных организаций.
Ну ок, забираю всех пользователей, считаю у каждого баланс, и выходило 4К запросов. Нереально много.
Я не ожидал, что у компании столько подконтрольных организаций. (около 1К) , скорость загрузки страницы около 10секунд.
Это было недопустимо.
Пришлось переписать под sql, и все ограничилось 5! sql запросами. да, сложными, но запрос на базу занял всего 180мс.
В вашем случае, если хотите ускорить быстродействие текущие страницы, стройте сложный расчет на sql, и сразу забирайте данные о партнерах.
Как я могу забрать сразу я же написал мне нужно каждого проверить (сейчас пока 500 человек) на уровень 1,
потом тоже самое на уровень 2,
потом на уровень 3
и.т.д.
и конечный результат на 6 уровне (потому что я не знаю на текущей момент на каком уровне он будет)
и на последнем уровне уже определяюсь кто какого уровня достиг
Re: Кол-во обращений к базе
нет просто мы до этого с ним в личке обсуждали этот вопрос ... поэтому и решение в личке )
решается так же как и тот пример ...
Re: Кол-во обращений к базе
Хорошо на foreach попробую переделать, большинство запросов
Re: Кол-во обращений к базе
Одним запросом можно получить всех пользователей с их показателями и текущим уровнем. Вторым запросом таблицу уровней с пороговыми значениями. В PHP определяете до какого уровня дошёл пользователь. После пересчёта группируете пользователей по достигнутым уровням и для каждого уровня делаете один групповой UPDATE, где id пользователей указываете в IN ( id_пользователя_1, id_пользователя_2). Скорее всего не знаю каких-то ваших нюансов, т.к. не понимаю, зачем для проверки перехода между каждым уровнем делать отдельные запросы.
Re: Кол-во обращений к базе
Не все пойму то что вы написали, есть пример?Alexum писал(а): ↑2017.07.20, 13:52 Одним запросом можно получить всех пользователей с их показателями и текущим уровнем. Вторым запросом таблицу уровней с пороговыми значениями. В PHP определяете до какого уровня дошёл пользователь. После пересчёта группируете пользователей по достигнутым уровням и для каждого уровня делаете один групповой UPDATE, где id пользователей указываете в IN ( id_пользователя_1, id_пользователя_2). Скорее всего не знаю каких-то ваших нюансов, т.к. не понимаю, зачем для проверки перехода между каждым уровнем делать отдельные запросы.
или по подробней можете сказать?
Re: Кол-во обращений к базе
В чём разница раз в месяц проверять всех или при изменении у каждого?. Тем более так у вас всегда бкдет актуальная информация.drag0n писал(а): ↑2017.07.20, 12:55Я уже думал, не получается
мне нужно проверить достижения каждого человека, у каждого человека свой уровень достижения
уровень1
уровень2
уровень3
уровень4
уровень5
уровень6
если он достиг уровня 2, то он переходит на уровень 2
если уровень 3, то переходит на 3
и кто муже каждый уровень зависит от предыдущего
т.е.
уровень 2 зависит от уровня 1
уровень 3 зависит от уровня 2
уровень 4 зависит от уровня 2
и т.д.
и плюс расчеты на каждом уровне меняются