
Fike
08.05.2017
19:04:48
аргумент к хабру™

Darafei
08.05.2017
19:05:00
с чем может быть джоин в select case when aaa in (1,2,3) then 1 end ?

Anton [Mgn, az09@osm]
08.05.2017
19:05:46
джоин? с чем?
с табличной переменной же. ну или в пг конструкция есть которая создаёт на лету роусет

Google

Darafei
08.05.2017
19:07:16
там типичное деревце if-then-else, сворачивающее многообразие осма к ограниченному набору значений

Anton [Mgn, az09@osm]
08.05.2017
19:09:34
https://github.com/ThorstenHi/lyrk-mapstyle/blob/master/project.mml#L605
ничего так себе if-then-else

Darafei
08.05.2017
19:11:23
это гитхаб, ты можешь прислать патч
но я не вижу способа кардинально что-то изменить, не меняя схему данных

Anton [Mgn, az09@osm]
08.05.2017
19:13:36

Darafei
08.05.2017
19:14:16
зачем мапник, тебе ведь не нравятся in? :)

Anton [Mgn, az09@osm]
08.05.2017
19:14:17

Darafei
08.05.2017
19:27:40
совершенно ничего, планировщик свернёт этот запрос

Anton [Mgn, az09@osm]
08.05.2017
19:27:56
оно так и читабельней будет, не? =)

Darafei
08.05.2017
19:28:35
кому именно читабельней?

Anton [Mgn, az09@osm]
08.05.2017
19:29:19
эээ, carto?

Google

Anton [Mgn, az09@osm]
08.05.2017
19:29:42
на самом деле действительно редко ведь кто туда лезет, ты прав

Darafei
08.05.2017
19:30:11
carto вообще не в курсе о существовании постгреса
он просто отдаёт запрос мапнику, внутри которого, благодаря такой структуре запроса, не нужно писать полноценный парсер SQL, вставляющий что-то во внутренние скобки
а carto и делался как способ отделить css от sql и дать дизайнерам крутить цвета, не задумываясь о запросах, которые им написал кто-нибудь в самом начале

Anton [Mgn, az09@osm]
08.05.2017
19:38:13
сегодня я кручу sql, а завтра буду дизайнером ?

Айтуар
08.05.2017
19:56:49
да и постоянные IN расстраивают
Я вообще наших разрабов хочу удавить. За эти IN (и здесь сотни id). А потом они удивляться - а что это у нас запросы часами выполняются.

Anton [Mgn, az09@osm]
08.05.2017
20:00:18
это неправильные разрабы. и они дают неправильный код
но удавливания конечно не помогут. где тут стикер "explain"? %)

Darafei
08.05.2017
20:07:07
а id in (сотни id) - это ещё нормальные разрабы.
местами люди делают сотню запросов where id=N.

Айтуар
08.05.2017
20:09:22

Darafei
08.05.2017
20:10:00
я не знаю, у меня так в продакшене, никто не жаловался

Аггей
08.05.2017
20:16:17
Я, к сожалению, так плотно с pg не работал, но для oracle - у меня правило - если в in подзапрос возвращающий больше 10 значений - переделай на join или на exists на худой конец. А в pg не знаю быстрее ли exists чем in

Anton [Mgn, az09@osm]
08.05.2017
20:21:14
эхотаг рулит!

Darafei
08.05.2017
20:23:38
у тебя work_mem заниженный

Anton [Mgn, az09@osm]
08.05.2017
20:23:54
и @Komzpa конечно котик
sm=> SHOW work_mem;
work_mem
—------—
512MB

Google

Anton [Mgn, az09@osm]
08.05.2017
20:28:08
цпу на 56 потоков и я немного очкую каждому ворку много давать. хотя озу конечно тоже жирная, наверно можно и подбросить

Darafei
08.05.2017
20:29:00
или random_page_cost не 1.01, а 4
в общем, там бы не Bitmap index scan, а просто Index scan

Anton [Mgn, az09@osm]
08.05.2017
20:34:28

Darafei
08.05.2017
20:34:47
толку от этих 56 потоков, если они упрутся в io и будут перепроверять каждую подозрительную страницу целиком на соответствие запросу, вместо того, чтобы сразу взять нужную строчку
у геометрий на средних масштабах совершенно неправильные эстимации, им постоянно кажется, что сейчас прочтут всю таблицу два раза
на твоём запросе планировщик думал, что rows=44,755,172, а оказалось, что rows=2,922
так что если не хочется чинить постгис и изобретать правильные быстрые эстиматоры для такого случая, можно просто разрешить ему брать памяти под 44 755 172 строк
возьмёт он из них только под 2 992, но нервничать перестанет

Anton [Mgn, az09@osm]
08.05.2017
20:46:50
https://explain.depesz.com/s/eVqD
битмап исчез но 44 млн осталось
время наверно уже не улучшить?

Anton [Mgn, az09@osm]
08.05.2017
20:52:55
4,5 Гб ворк_мем?! ну не знаю

Darafei
08.05.2017
20:53:19
у меня 10гб

Anton [Mgn, az09@osm]
08.05.2017
20:54:04
тут либо планировщик нервничает, либо я )
придется привыкать

Darafei
08.05.2017
20:54:58

Anton [Mgn, az09@osm]
08.05.2017
20:55:41
и таких еще несколько по потребностям картостиля?

Darafei
08.05.2017
20:55:58
если надо
нарендерить карту всех домов в 11х11км за 20 секунд - возможно, не очень плохо, если это ляжет в кеш

Anton [Mgn, az09@osm]
08.05.2017
21:03:19
у меня 10гб
https://explain.depesz.com/s/dtBo
что-то не вижу разницы. 6 мало ему?

Google

Darafei
08.05.2017
21:03:50
нет, ворк_мем тут уже не поможет
всё влезает в память
поможет или cluster osm_buildings using osm_buildings_geom; или create index on osm_buildings_geom using gist(geometry) where type not in ('0', 'false', 'no');

Admin
ERROR: S client not available

Darafei
08.05.2017
21:05:39
ещё поможет delete from osm_buildings where type in ('0', 'false', 'no') и стереть это условие из запроса

Anton [Mgn, az09@osm]
08.05.2017
21:06:07
мудро
это как в генту собирать весь мир
хех, каламбурчик )

Darafei
08.05.2017
21:08:33
в планете всего 12 736 building=no, 1 building=0, ни одного false
можно переписать на where type != 'no' без особого вреда
если, конечно, в type не попадают значения из ещё каких-то тегов, кроме building

Anton [Mgn, az09@osm]
08.05.2017
21:12:19

Darafei
08.05.2017
21:12:44
ну, ты же не любил in
вот ты от него избавился, а разницы - никакой

Anton [Mgn, az09@osm]
08.05.2017
21:15:07
эхотаг рулит!

Alexey
08.05.2017
21:16:54
Ребят, вам оффтопик-лист вынести?
Эхотаг, сабж — это всё давно умерло. У меня тмыл уже не алё.

Anton [Mgn, az09@osm]
08.05.2017
21:23:22

Alexey
08.05.2017
21:24:34
Сорян, тут письмо ареафиксу писать не нужно — проще выйти.

Yernar
09.05.2017
17:07:56
народ, у меня вопрос такой. я хотел бы переустановить ОС. как переносить базу данных на новую винду

Google

Dmitriy
09.05.2017
17:18:53

Dmitry
09.05.2017
17:27:27

Wom
09.05.2017
17:27:30
имхо, проще нагуглить как делать бакап, чем найти этот канал :)

Dmitry
09.05.2017
17:32:12

Yernar
09.05.2017
17:37:27

Нияз
09.05.2017
17:56:39

Dmitry
09.05.2017
17:58:01

Нияз
09.05.2017
17:59:34

Dmitry
09.05.2017
18:01:42

Нияз
09.05.2017
18:02:03

Leonid
09.05.2017
18:22:21
Кто работал с PostgreSQL в psycopg2 (Python). Можете подсказать, если с базой через скрипт работают несколько пользователей (читают из неё данные), надо ли создавать для каждого пользователя свой курсор и закрывать его после окончания его работы с базой.

Jim
09.05.2017
21:49:53
емнип, курсор для каждой сессии свой