
Alexey
14.12.2017
09:51:38

equicolor
14.12.2017
09:51:46
А под нагрузкой в проде - 10 сек
Хз, могут ли еще 30 миллионов так деградировать производительность

Google

Alexey
14.12.2017
09:52:20
40кк строк во временную таблицу у тя будут ощутимо долго писаться
еще и диск лочить ?

SiZE
14.12.2017
09:53:23

equicolor
14.12.2017
09:53:49
абсолютли
блин, вчера хотел потестить, но у меня дамп не доконца развернулся - место закончилось))
А если я проверну то же самое, но с подзапросом, который уже отфильтрует по clientId?

SiZE
14.12.2017
09:54:54
но ты не учитываешь тот факт что в проде диск может быть занят гораздо больше и соединений с базой так же больше :)
скажем если он на 100% молотит своими шпинделями, у тебя запрос может и час отрабатывать

equicolor
14.12.2017
09:55:31

Maxim
14.12.2017
09:55:34

equicolor
14.12.2017
09:56:32

Maxim
14.12.2017
09:57:30
попробуй еластик. Находи в нем id и передавай в mysql, будет быстрей
какое железо на сервере?

SiZE
14.12.2017
09:58:48

Google

equicolor
14.12.2017
10:06:27
какое железо на сервере?
16 ядер, много оперативы, точно не помню. Там много всего крутится и один mysql тащит сразу кучу всего. У нас есть elastic для логов, пока не понял как он поможет


Timur
14.12.2017
10:06:50
Уважаемые гуру, не могли бы подсказать про оптимизацию запроса и индексы в 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. Если же я добавляю проверку еще на остальные поля, то индекс уже не используется. Можно как-то ускорить выборку, не делая состовного индекса сразу по всем полям, которые используются в запросе?


Maxim
14.12.2017
10:08:53
Уважаемые гуру, не могли бы подсказать про оптимизацию запроса и индексы в 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


Firs
14.12.2017
10:08:54
Уважаемые гуру, не могли бы подсказать про оптимизацию запроса и индексы в 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
14.12.2017
10:09:30
статус лучше

Timur
14.12.2017
10:10:39

Maxim
14.12.2017
10:11:22

Timur
14.12.2017
10:13:42

Firs
14.12.2017
10:16:56
К yii1 можно как-то неймспейсы прикрутить?

SiZE
14.12.2017
10:17:44
Точней самое простое через композер

Firs
14.12.2017
10:18:36

SiZE
14.12.2017
10:20:48
\Yii и тп

Alexey
14.12.2017
10:21:42
че нет-то )
цепляешь композер, композеровский автолоадер и все пашет

Firs
14.12.2017
10:23:15
Хмм... Это autoload.php который?

Alexey
14.12.2017
10:23:49
Да

Firs
14.12.2017
10:23:52
А все, просто заново индекс шторм запустил и все ок

Google

equicolor
14.12.2017
10:34:03
Вот такое летает)

I.C.
14.12.2017
10:40:55

Maxim
14.12.2017
10:41:15
Вот такое летает)
я удивлен, что твои 30млн конкатенируются очень быстро
Но решение прикольное)))

Ad.x ??
14.12.2017
10:42:14
мож старый запрос попробовать фиксануть путем перестановки условий во where и использованием другого индекса?

Maxim
14.12.2017
10:43:41
я все равно в таких ситуациях лучше вложенный запрос сделаю находя нужный список max(id)

Ad.x ??
14.12.2017
10:47:17

SiZE
14.12.2017
10:49:07

Maxim
14.12.2017
10:49:14
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_group_concat_max_len
429млн created_at сможет склеить, а дальше запрос по бороде пойдет)))

Maxim
14.12.2017
10:52:47
учитывая запятую в длинну - 390 млн
Вот такое летает)
попробуй group_concat_max_len поставить например в 100
Так узнаем за какую длинну отвечает эта опция
За длинну при обработке или за длинну строки при финальной выдаче
У тебя получается длинна при обработке запроса может быть очень большой, а в результате 10 символов

1Klass
14.12.2017
11:00:49
при отправке почта выходить такой ошибок
может кто помочь?)

Dmitry
14.12.2017
11:02:00

Alexey
14.12.2017
11:03:07
kingtour.uz
узбеки :D

Google

Lee
14.12.2017
11:03:51

Maxim
14.12.2017
11:04:34

Lee
14.12.2017
11:04:38

1Klass
14.12.2017
11:06:03
как бы это не мой част кода это SwiftMailer

Dmitry
14.12.2017
11:06:23
как бы не кастом

Lee
14.12.2017
11:06:48

Dmitry
14.12.2017
11:07:09

Maxim
14.12.2017
11:07:54
да пое*ать
Верно! Всегда можно отнаследоваться и сделать нормально

Dmitry
14.12.2017
11:07:59
@Sorry4Wait и покажи, что у тебя в конфиге

Admin
ERROR: S client not available

Dmitry
14.12.2017
11:08:18

Lee
14.12.2017
11:08:20

1Klass
14.12.2017
11:08:48
mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@app/mailer',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.gmail.com',
'username' => 'pochta@gmail.com',
'password' => 'password',
'port' => '465',
'encryption' => 'ssl',
],
],

Maxim
14.12.2017
11:10:24
mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@app/mailer',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.gmail.com',
'username' => 'pochta@gmail.com',
'password' => 'password',
'port' => '465',
'encryption' => 'ssl',
],
],
Там в настройках мейла не забудь разренение дать, забыл название опции
У меня по 587 порту норм работает

Lee
14.12.2017
11:10:28
mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@app/mailer',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.gmail.com',
'username' => 'pochta@gmail.com',
'password' => 'password',
'port' => '465',
'encryption' => 'ssl',
],
],
А это уже у гугла спрашивай, какого хера он тебе аксес не даёт к почте.
Зайди на почту, там письмо должно прийти, что кто-то пытался подключиться.
Дай себе грант-акцес и не выё :)

Maxim
14.12.2017
11:10:36
Или какой там второй

Dmitry
14.12.2017
11:11:09
попробуй через тестовый сервис прогнать. тут скорее всего гугл тупит. Илюха прав

Lee
14.12.2017
11:11:19

Dmitry
14.12.2017
11:11:34
ну да

Google

Dmitry
14.12.2017
11:11:46
пихуй, не важно. суть проблемы - дело в сервисе

Lee
14.12.2017
11:12:58
Кругом одни проблемы.
Одни — заблокали доступ.
Другие — неправильно обработали ошибку.
Дело закрыто.
Расследование проведено, суд постановил.

Alexey
14.12.2017
11:19:00
нэ
а почту лучше слать через mailgun

Dmitry
14.12.2017
11:31:53

Maxim
14.12.2017
11:34:14
мне кажется с него дольше идет

Alexey
14.12.2017
11:35:02
есть стата, есть логи, можно баунсы онлайн всякие смотреть, плюс рекомендации есть по настройке всяких спф
10к бесплатных писем в месяц хватит почти любому проекту
попиарю :D https://packagist.org/packages/yarcode/yii2-mailgun-mailer

Evgeniy
14.12.2017
11:43:02
Всем привет. Ребят, подскажите пожалуйста. Куда можно установить node_modules из npm, чтобы мог спокойно обращаться к нему?

Maxim
14.12.2017
11:50:33
Обычо в корне проекта или глобально лежит

Evgeniy
14.12.2017
11:51:18

Yet Another Stats
14.12.2017
11:52:20
Карма @maximniko стала 9

Timur
14.12.2017
11:58:31
Так, а как мне правильно спасибо сказать, чтобы у пользователя, которого я поблагодарил, карма поднялась?

Maxim
14.12.2017
12:01:56

Lee
14.12.2017
12:18:12
Домен настроить.

Dmitry
14.12.2017
12:29:09
конфиг поменять