
Mike Chuguniy
18.02.2017
14:43:06
А, ну инсерт... Используйте COPY

Denis
18.02.2017
14:43:30
А, ну инсерт... Используйте COPY
я вставлю через copy денормализоанные данные, а потом выясняю их нормальную форму и вставляю из одной таблицы в целевую сс помощью insert from select. Разве можно вставлять данные из одной таблицы в другую в помощью COPY?
COPY — копировать данные между файлом и таблицей

Google

Darafei
18.02.2017
14:46:06
ну, вне текущего контекста - можно, и это пока что, например, единственный способ получить таблицу через parallel seq scan
но вообще insert into ... select должен шустро работать

Denis
18.02.2017
14:49:34
хорошо, а вот та таблицу куда я ссылаюсь, назову ее справочник, при вставке в нее, постгрес будет же проверять в таблицах что на нее ссылаются, только не пойму что вставка же

Anton [Mgn, az09@osm]
18.02.2017
14:50:00
@Komzpa пошто из https://t.me/ruosm ливнул? Кроме тебя никто ответить не сможет наверно на мой вопрос ?

Darafei
18.02.2017
15:16:34

Anton [Mgn, az09@osm]
18.02.2017
15:17:57
Но если нет адекватного железа а есть несколько так себе что делать?

Darafei
18.02.2017
15:20:17
продать и купить адекватное. на хетцнере адекватное для домашнего применения стоит 40 евр в месяц.

Anton [Mgn, az09@osm]
18.02.2017
15:22:29
Да если бы домашнего

Sergey
18.02.2017
16:23:36
всем привет... не ставиться на 7 сентос 9.6 с postgrespro точнее ставиться, но не запускается ... в логах ошибка юнита postgres
блин не туда .. ;) надо на линукс ...

Shaz
18.02.2017
16:28:12

Петр
18.02.2017
17:10:24
ошибку покажите

Sergey
18.02.2017
18:28:00
да не ... дистр я менять не буду ... именно 9.6 хотел попробовать ... ладно вернусь на 9.5

Google

Mike Chuguniy
19.02.2017
00:37:04

Артур
19.02.2017
00:39:06
Как для postgres написать это?
UPDATE mods_estateaddress , mods_estateaddress_arguments
SET mods_estateaddress.tth_architect_type='1'
WHERE mods_estateaddress_arguments.name = 'tth_architect_type' AND mods_estateaddress.id = mods_estateaddress_arguments.sub AND mods_estateaddress_arguments.value = '1'
Сорри, кажется понял
UPDATE ... SET ... FROM ... WHERE ....
id ~E'^\\d+$'
Я как понимаю это не регулярка? И что это тогда?
Хотя беру свои слова обратно я работал с PRCE регулярками - а это POSIX

Sergey
19.02.2017
05:58:47

Magistr
19.02.2017
07:51:39
А что сейчас есть из софта для управления кластером/репликацией постгреса ?
а во нашел repmgr

Андрей
19.02.2017
08:56:53
corosync+pacemaker)

Артур
19.02.2017
16:18:17
#статистика
Postgres: обновление одного поля в ~500 000 записей c получением данных из другой таблицы с ~10 000 000 записей запросом
UPDATE table_main
SET column_main=table_arguments.value
FROM table_arguments
WHERE table_arguments.name = column_arguments AND table_main.id = table_arguments.sub
Происходит ~30 минут
А с запросом
UPDATE table_main
SET column_main=CASE WHEN table_arguments.value ~E'^\\d+$' THEN CAST(table_arguments.value AS INTEGER) ELSE null END
FROM table_arguments
WHERE table_arguments.name = column_arguments AND table_main.id = table_arguments.sub
Происходит ~45 минут

Darafei
19.02.2017
16:20:57
а план?

Артур
19.02.2017
16:22:17

Darafei
19.02.2017
16:22:25
план запроса

Артур
19.02.2017
16:23:04
из одной таблицы забрать данные и поместить в другую, чтобы убрать оттуда потом эти данные
Статистику скинул для информации. Вряд ли кто упорется и будет так делать просто эксперимента ради

Darafei
19.02.2017
16:24:00
план покажи, explain (analyze, verbose, buffers)
ну или хотя бы без analyze

Артур
19.02.2017
16:24:23
:) ну только не сейчас чуть позже

Google

Артур
19.02.2017
16:26:19
если можно как-то налету анализировать, тогда я сделаю

Darafei
19.02.2017
16:26:37
autoexplain?

Артур
19.02.2017
16:27:08
нет, типа show processlist, но в направлении анализа
Если такое есть, я могу выполнить запрос и скинуть скрин результата
Есть еще вариант подождать паручасов и я спецом выполню один такой запрос, чтобы показать анализ

Maksim
19.02.2017
16:28:13
пропатчить правда посгрес придётся

Darafei
19.02.2017
16:28:46
ну, на explain без analyse можно и так посмотреть же ж?

Артур
19.02.2017
16:28:59
а, сорри, не так прочитал

Dmitry
19.02.2017
17:22:12
http://prntscr.com/ear4py

Maksim
19.02.2017
17:25:21

Dmitry
19.02.2017
17:25:46
живой пример.
http://prntscr.com/ear5sm
https://dev.mysql.com/doc/refman/5.7/en/general-thread-states.html

Артур
19.02.2017
18:02:32
может липит для эксплейна поставить?
чтобы не ждать 30 минут
@Komzpa чего скажешь?

Google

Darafei
19.02.2017
18:03:17
сделай эксплейн без ничего

Артур
19.02.2017
18:03:44
Чего здесь, хоть расскажите.
Ато для меня это вообще каша :)
А раз выложил, тоже интересно :)

Darafei
19.02.2017
18:07:08
это всегда так интересно, когда люди проводят замеры, не понимая, что они, собственно, замеряли

Артур
19.02.2017
18:07:25
)))

Dmitry
19.02.2017
18:07:52
https://explain.depesz.com/
чтобы читать не понимая что снял :)
там будет разными цветами подсвечиваться для самых маленькых

Артур
19.02.2017
18:10:13
ну то есть получается что на апдейт и мёрдж тратится больше времни чем на остальное. Ну как бы это логично. Или бывает иначе?
В общем я статистику скинул. Если кроме полезна инормация и поможет при планировании времени на аналогичные алгоритмы (ну чтобы самим не проверять), я очень рад

Darafei
19.02.2017
18:12:26

Артур
19.02.2017
18:13:28
В закладки забросил, чтобы коллегам тоже дать почитать

Darafei
19.02.2017
18:13:51
закладки не заменяют мозг
это нужно прочитать и осознать, чтобы не тратить часы на ненужные замеры

Maksim
19.02.2017
18:25:08

Darafei
19.02.2017
18:29:21
мне пока что кажется, что индекс по btree (sub) where name='address' по второй таблице сделал бы из мержа seq scan на апдейт + index scan, и это было бы, возможно, быстрее мержа
а так там даже work_mem на sort не хватает

Google

Darafei
19.02.2017
18:32:40
@Archeebald work_mem не 4 мб часом? :)

Denis
19.02.2017
19:02:28
Появился один вопрос по постгресу.
И так имеем два запроса:
...
ORDER BY A <-> B
LIMIT 620
и
...
ORDER BY A <-> B
LIMIT 630
Первый работает классно: быстро и по индексу
Второй работает плохо: оч. долго и вручную сортирует все.
В принципе я выяснил что knn индекс так и должен работать. Непонятен вопрос, как ограничен лимит? Есть какие-то ссылки по теме?

Darafei
19.02.2017
19:03:12
...покажи план? :)

Lev
19.02.2017
19:03:51
@Komzpa с анестетиков сразу на план присел =)

Darafei
19.02.2017
19:06:37

Denis
19.02.2017
19:06:50
https://explain.depesz.com/s/Hx7
https://explain.depesz.com/s/p0a
http://www.slideshare.net/jkatz05/knn-39127023 - нашел это. 22 слайд

Darafei
19.02.2017
19:08:51
Sort Method: external merge Disk: 1896kB
и у тебя work_mem в 4 мб? :)

Denis
19.02.2017
19:09:24
Я на микроволновку поставил
Чтобы проблемы на меньших объемах вылезали

Darafei
19.02.2017
19:10:52
ну, основная проблема - это всё-таки '+proj=hammer'::text, ибо hammer - equal-area, а меряшь ты distance :)
@den1970 show work_mem

Denis
19.02.2017
19:13:23
дефолтнй воркмем
проекция в принципе любая дает один результат

Darafei
19.02.2017
19:15:35
если любая, то почему в 4326 не оставишь? :)

Denis
19.02.2017
19:17:27
Даже нативный POINT() <-> POINT() дает такой же результат

Darafei
19.02.2017
19:17:27
в общем, ты хотел, чтобы оно стреляло раньше - оно стреляет раньше. сильно раньше. :)

Denis
19.02.2017
19:18:13
Ну это то понятно. Просто непонятно от чего зависит предел LIMIT