
Alexey
28.05.2017
08:13:35
ну это скорее следствие того хака, которым это реализовано. если это делать именно из коробки, то нужен SQL синтаксис. А если прикручивать сбоку, то можно код из крона выдрать, да
ну то такое. а ещё что-нибудь?
есть же просто и очевидные недостатки: extension с бинарными пакетами только под centos, числовые id вместо символьных имён, поминтное разрешение (унаследованное от cron кстати) и т.д. Мне вот любопытно стало, как это поделие автоматически "лучше" умудрилось стать
о, с репликацией там всё плохо. В mysql можно указать при создании ивента, что с ним делать на реплике. здесь либо игнорируется при физической репликации, а про логическую по-моему вообще никто не подумал. и это никак не меняется

Google

Sergey
28.05.2017
08:28:14
Логическая репликация в десятке будет.

Alexey
28.05.2017
08:41:13
да я в курсе. не о том речь

Darafei
28.05.2017
09:19:24
если кто-то ещё пишет большие штуки на psql, я тут завёл тикет в DataGrip про поддержку \set, его можно полайкать
https://youtrack.jetbrains.com/issue/DBE-4660

Артур
28.05.2017
09:25:46
Всем привет, хорошего воскресенья.
Логировать баги и исключения лучше в постгрю или в файл?
Как лучше с точки зрения скорости?
Может оба одинаково или в постгрис быстрее. Тогда буду в постгрес.
Если кто замерял, скажите пожалуйста.

Igor
28.05.2017
09:44:36
по-моему, "одинаково" там на запись никак быть не может

Darafei
28.05.2017
09:53:39
логировать откуда, куда, зачем, кто это будет читать?
почему бы не kibana/elasticsearch/logstash?

Артур
28.05.2017
10:06:00
Вопрос стоит только о записи - не анализе.
Ну например при исключении, логгер сейчас пишет в файл событие исключения, данные понему, трейсы
Хотя с другой стороны ротация логов же потом всеравно понадобится. @Komzpa эти продукты рассмотрю.

Darafei
28.05.2017
10:08:05
логи, которые не анализируют, писать не нужно :)

Артур
28.05.2017
10:09:42
Я понял уж глупость своего сообщения :) Не надо добивать :)

Google

Darafei
28.05.2017
10:10:11
или тот же https://sentry.io

Артур
28.05.2017
10:10:15
А сам чего юзаешь?

Darafei
28.05.2017
10:13:47
у меня оффлайновый длинный пайплайн, так что я пишу всё в текстовые файлы простым редиректом stdout/stderr.
оно всё сведено в мейкфайл и запускается под нашим профайлером, который потом выдаёт граф вызовов и тайминги
если что-то зафейлилось, можно просто клацнуть в итоговой svg на таргет и порассматривать, почему.
выглядит как-то так:
https://github.com/gojuno/make-profiler/blob/master/make.svg
а в продакшене кибана, да

Артур
28.05.2017
10:50:57
Спасибо за информацию
Еще вопрос, как ускорить удалени строк. 500 из 400 000 строк на hdd удаляет более 10 минут
Есть связанные таблицы. Порядка 10

Alex
28.05.2017
13:42:09
Через using по id

Артур
28.05.2017
13:43:16
?

Pavel
28.05.2017
13:51:40
?
DELETE FROM events USING event_types
WHERE events.event_type_fk = event_types.event_type.id
AND relevance_level IN ( 1, 3, 5, 7)
AND <ANY_ANOTHER_CONDITION_YOU_
NEED>
?
DELETE FROM films USING producers
WHERE producer_id = producers.id AND producers.name = 'foo';

Darafei
28.05.2017
13:53:28

Артур
28.05.2017
13:53:55
Вот пока не могу дождаться
уже 3 минуты пашет

Pavel
28.05.2017
13:55:08
А зачем WITH?
в WHERE разве нельзя добавить условие?

Артур
28.05.2017
13:55:48
И так и эдак висит

Kirill
28.05.2017
14:01:30
А сам запрос, который id-шники вытаскивает быстро работает?

Alex
28.05.2017
14:02:34
там постгрес не настроен

Google

Alex
28.05.2017
14:02:42
дефолтные настройки
вангую что упирается в диск

Darafei
28.05.2017
14:11:58

Артур
28.05.2017
14:12:43
Сейчас шеред мемори ставлю 2гб
Потом скажу что и как

Darafei
28.05.2017
14:13:52
Не может explain без analyse долго работать, если в системе все в порядке
Ему же только план показать

Артур
28.05.2017
14:17:36
Хе :) Вот долго думает
Возможно потому что винт hdd

Артур
28.05.2017
14:20:43
Тихо, без ошибк не запускается

Alex
28.05.2017
14:21:38
Попробуй меньше поставить :)

Артур
28.05.2017
14:24:21
Ладно, ребят. Тут походу у меня надолго. Полтергейст какой-то. Вообще запускаться перестал.
Спасибо за потраченное время
Вот это долго работает
2Gb шаред мемори
воркмем 64Мб

Darafei
28.05.2017
15:07:02
а там limit 500 нужен по логике?

Google

Darafei
28.05.2017
15:07:33
или это какая-то попытка оптимизации?

Артур
28.05.2017
15:08:03
Хотябы 500..
Не говоря уж о 7000 строк

Darafei
28.05.2017
15:09:03
а delete from address_house where locality_id = 1; не быстрее?
оно должно выродиться в простой seq scan

Admin
ERROR: S client not available

Артур
28.05.2017
15:09:37

Alex
28.05.2017
15:09:37
Индекс нужен отдельный
Там же видно что в сек скан уперлось

Darafei
28.05.2017
15:10:37
analyse на delete тебе удалит, а потом вернёт обратно все строчки, по идее.
в смысле, не нужно пишущим запросам без нужды analyse делать
он же их выполняет и откатывает
если ты и так дождёшься, то выполняй без analyse

Артур
28.05.2017
15:12:07
Это без эксплейна

Darafei
28.05.2017
15:12:14
а у тебя там несколько параллельных делитов, что ли?

Артур
28.05.2017
15:12:56
с этой таблицей связано много дочерних таблиц с Ondelete restrict и 2 таблицы с ondelete cascade

Darafei
28.05.2017
15:13:18
ага
а limit 1 быстро выполняется?

Артур
28.05.2017
15:13:39

Google

Darafei
28.05.2017
15:14:07
делит, такой, как у тебя с limit 500

Артур
28.05.2017
15:14:23
1 сек, сейчас проверю

Darafei
28.05.2017
15:17:00
если быстро, то можно изобретать seq 1 500 | parallel --eta 'psql -c "delete from address_house where id = (select id from address_house where locality_id = 1 for update skip locked);"'
выполни его
план, ясное дело, такой же будет

Артур
28.05.2017
15:17:22

Darafei
28.05.2017
15:18:34
ну, 2.3 секунды да на 500 штук - 20 минут

Артур
28.05.2017
15:19:00
Это всегда со связанными таблицами так долго?

Darafei
28.05.2017
15:19:15
ну, у тебя написано, какие триггеры тормозят
удали вторую строчку так же
вдруг оно погрелось и будет в кешах смотреть