Niko
в объеме измененных файлов
Никогда не думал, что это проблема)))
SiZE
Никогда не думал, что это проблема)))
да у меня в офисе половина народа так же думает, что зарешать параллельно в одной задаче еще десяток нормально
SiZE
а то что они наебнут функционал, который не будет протестирован их не волнует
Alexey
Никогда не думал, что это проблема)))
компьютер железный - все прожует
SiZE
А тот кто будет ревьюить ослепнет )
Alexey
ну камон
Alexey
если у тя сотни файлов в пхп вьюхах, там явно уже кто-то ослеп
SiZE
Короче все свелось к тому что тебе это не надо, но это не значит что никому не надо
SiZE
а чо у тебя дальше то за условия?
SiZE
запрос один скинул, а по факту в плане другой
Artem
запрос один скинул, а по факту в плане другой
да, прошу прощения. Решил убрать лишний шум из запроса. вообще запрос такой: https://i.gyazo.com/2db4ebab2f567bbafa6bd971092645ff.png там составной перв. ключ только
Alexey
having запросы медленнее
SiZE
можно через EXISTS попробовать сделать
Evgenii
Кто делал фейсбук бота? Юзаю https://github.com/pimax/fb-messenger-php Никак не получается получить ответ. Подписка на вебхук оформлена. Запросы доходят на сервер, но ответ не приходит.
SiZE
и вообще такие вещи лучше через него по возможности
Niko
мне не нужно решение на Yii, простите
чего ты в этой группе? Перепиши под чистый SQL, вложенный запрос не видишь? Будет быстрей чем твой джойн 70х70к
Artem
и вообще такие вещи лучше через него по возможности
Посмотрю в его сторону, спасибо. Никогда не приходилось юзать
Artem
чего ты в этой группе? Перепиши под чистый SQL, вложенный запрос не видишь? Будет быстрей чем твой джойн 70х70к
у меня и так чистый SQL, в этой группе активные люди с опытом РБД, почему бы нет?
Alexey
в любом случае медленнее, они полным датасетом оперируют
Artem
вот у меня на локале на 40кк отрабатывает вообще моментально.
Artem
А под нагрузкой в проде - 10 сек
Artem
Хз, могут ли еще 30 миллионов так деградировать производительность
Alexey
40кк строк во временную таблицу у тя будут ощутимо долго писаться
Alexey
еще и диск лочить 😊
Artem
абсолютли
блин, вчера хотел потестить, но у меня дамп не доконца развернулся - место закончилось))
Artem
А если я проверну то же самое, но с подзапросом, который уже отфильтрует по clientId?
SiZE
но ты не учитываешь тот факт что в проде диск может быть занят гораздо больше и соединений с базой так же больше :)
SiZE
скажем если он на 100% молотит своими шпинделями, у тебя запрос может и час отрабатывать
Artem
но ты не учитываешь тот факт что в проде диск может быть занят гораздо больше и соединений с базой так же больше :)
не, я понимаю) просто нет пре-прод сервера и приходится гадать по кофейной гуще о производительности
Niko
Хз, могут ли еще 30 миллионов так деградировать производительность
ты бы разбил на таблицы по appId и выбирал из нужной или сфинкс / еластик поставил бы Сколько у тебя appId?
Niko
попробуй еластик. Находи в нем id и передавай в mysql, будет быстрей
Niko
какое железо на сервере?
SiZE
Посмотрю в его сторону, спасибо. Никогда не приходилось юзать
Хотя анти джоин может через NOT EXISTS наоборот быть медленее...
Artem
какое железо на сервере?
16 ядер, много оперативы, точно не помню. Там много всего крутится и один mysql тащит сразу кучу всего. У нас есть elastic для логов, пока не понял как он поможет
Timur
Уважаемые гуру, не могли бы подсказать про оптимизацию запроса и индексы в MySQL? Есть большая табличка с новостями (1 500 000+ записей). Надо мне выбрать записи за определенное время, у которых заполнены все поля (у черновиков что-то может быть пустым). Я делаю: SELECT news.title FROM news WHERE DATE(application.changes_date) >= DATE(NOW() - INTERVAL 30 DAY) AND title <> '' AND body <> '' AND ... - еще несколько полей, проверяющихся на не пусто. При таком запросе выборка происходит очень медленно (а если использовать эту выборку в качестве подзапроса с LEFT JOIN, то вообще несколько минут). Как бы мне правильно оптимизировать этот запрос? Я сделал индекс по полю date, но EXPLAIN показывает, что этот индекс используется, если я произвожу выборку ТОЛЬКО по полю date. Если же я добавляю проверку еще на остальные поля, то индекс уже не используется. Можно как-то ускорить выборку, не делая состовного индекса сразу по всем полям, которые используются в запросе?
Niko
Уважаемые гуру, не могли бы подсказать про оптимизацию запроса и индексы в MySQL? Есть большая табличка с новостями (1 500 000+ записей). Надо мне выбрать записи за определенное время, у которых заполнены все поля (у черновиков что-то может быть пустым). Я делаю: SELECT news.title FROM news WHERE DATE(application.changes_date) >= DATE(NOW() - INTERVAL 30 DAY) AND title <> '' AND body <> '' AND ... - еще несколько полей, проверяющихся на не пусто. При таком запросе выборка происходит очень медленно (а если использовать эту выборку в качестве подзапроса с LEFT JOIN, то вообще несколько минут). Как бы мне правильно оптимизировать этот запрос? Я сделал индекс по полю date, но EXPLAIN показывает, что этот индекс используется, если я произвожу выборку ТОЛЬКО по полю date. Если же я добавляю проверку еще на остальные поля, то индекс уже не используется. Можно как-то ускорить выборку, не делая состовного индекса сразу по всем полям, которые используются в запросе?
сделай поле "is_draft" и ставь 1 когда все поля заполнены и если какое-то не заполнено ставь обратно 0 И делай выборку where is_draft = 1
Dmitriy
Уважаемые гуру, не могли бы подсказать про оптимизацию запроса и индексы в MySQL? Есть большая табличка с новостями (1 500 000+ записей). Надо мне выбрать записи за определенное время, у которых заполнены все поля (у черновиков что-то может быть пустым). Я делаю: SELECT news.title FROM news WHERE DATE(application.changes_date) >= DATE(NOW() - INTERVAL 30 DAY) AND title <> '' AND body <> '' AND ... - еще несколько полей, проверяющихся на не пусто. При таком запросе выборка происходит очень медленно (а если использовать эту выборку в качестве подзапроса с LEFT JOIN, то вообще несколько минут). Как бы мне правильно оптимизировать этот запрос? Я сделал индекс по полю date, но EXPLAIN показывает, что этот индекс используется, если я произвожу выборку ТОЛЬКО по полю date. Если же я добавляю проверку еще на остальные поля, то индекс уже не используется. Можно как-то ускорить выборку, не делая состовного индекса сразу по всем полям, которые используются в запросе?
А boolen переменную черновик/чистовик замутить никак?
Alexey
статус лучше
Timur
А boolen переменную черновик/чистовик замутить никак?
В принципе, возможно. Придется повозиться, конечно, чтобы добавить ее ко всем уже имеющимся записям плюс допилить алгоритм сохранения. Надеялся обойтись только запросом, но, видимо, придется все-же код править.
Timur
добавь поле в бд и поведение на модель профит!
Ага, точно, не подумал как-то об этом. Спасибо за наводку, пошел ковырять :)
Dmitriy
К yii1 можно как-то неймспейсы прикрутить?
SiZE
Точней самое простое через композер
Dmitriy
Точней самое простое через композер
Phpstorm жёлтым ругается на классы yii...
SiZE
Phpstorm жёлтым ругается на классы yii...
Они глобальные должны быть
SiZE
\Yii и тп
Alexey
че нет-то )
Alexey
цепляешь композер, композеровский автолоадер и все пашет
Dmitriy
Хмм... Это autoload.php который?
Alexey
Да
Dmitriy
А все, просто заново индекс шторм запустил и все ок
Artem
Хотя анти джоин может через NOT EXISTS наоборот быть медленее...
Похоже, я нашел решение https://i.gyazo.com/3648fd274a38790f1804f77a83f1fa10.png
Artem
Вот такое летает)
Niko
Вот такое летает)
я удивлен, что твои 30млн конкатенируются очень быстро Но решение прикольное)))
The Ant
The Ant
мож старый запрос попробовать фиксануть путем перестановки условий во where и использованием другого индекса?
Niko
я все равно в таких ситуациях лучше вложенный запрос сделаю находя нужный список max(id)
The Ant
Похоже, я нашел решение https://i.gyazo.com/3648fd274a38790f1804f77a83f1fa10.png
групп конкат вроде максимум 1024 символа, не? не помню если честно спецификацию, но лимит вроде есть
Niko
групп конкат вроде максимум 1024 символа, не? не помню если честно спецификацию, но лимит вроде есть
там длинна опционально настраивается до кол-ва символов в длинну инта
Niko
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_group_concat_max_len
Niko
429млн created_at сможет склеить, а дальше запрос по бороде пойдет)))
Niko
учитывая запятую в длинну - 390 млн
Niko
Вот такое летает)
попробуй group_concat_max_len поставить например в 100 Так узнаем за какую длинну отвечает эта опция За длинну при обработке или за длинну строки при финальной выдаче У тебя получается длинна при обработке запроса может быть очень большой, а в результате 10 символов
Sorry4Wait
Sorry4Wait
при отправке почта выходить такой ошибок
Sorry4Wait
может кто помочь?)
Dmytro 🇺🇦
может кто помочь?)
есть 1 парень. xDebug
Alexey
kingtour.uz
Alexey
узбеки :D
Lee
может кто помочь?)
А ты убедись что ресурс к которому ты подключаешься — апнут