
Alex
05.01.2018
19:40:22
Привет ! Есть какие-нибудь идеи ?
https://pastebin.com/5CpDsmgi
https://explain.depesz.com/s/TRTX
на тестовом выполняется очень быстро
Execution time: 536.399 ms
, на продакшн сервере нету доступа приходится в слепую.

Petr
05.01.2018
19:47:00
@netneladno а не имел ли ты дело с merge partitions?

Evgeniy
05.01.2018
19:47:17

Google

Petr
05.01.2018
19:47:39
объединить две партиции в одну

Alex
05.01.2018
19:49:31

Evgeniy
05.01.2018
19:49:35
немножно в сто раз ошиблись

Alex
05.01.2018
19:51:15
вариант оптимизации ?

Petr
05.01.2018
19:52:18

Evgeniy
05.01.2018
19:52:50
вариант оптимизации ?
я немного туплю в
FROM ((xource.application app
JOIN compliance_client cc ON ((app.id = cc.application_id)))
JOIN x_compliance_client_license xccl ON ((cc.id = xccl.compliance_client_id)))
но кажется что тут порядок джойна руками забит

Alex
05.01.2018
19:53:29
с
set enable_nestloop = off;
намного медленнее

Evgeniy
05.01.2018
19:54:58
но мы читали 132кк блоков (по 8кб) на 10к строк
у тебя там в апликейшон блоат что ли

Alex
05.01.2018
19:57:01

Google

Evgeniy
05.01.2018
19:57:17
ничего не понимаю
0.011 мс на лукап индекса в app
всего 130мс на весь джойн
но внезапно 132кк блоков и 20 минут
я туповат
напиши в перфоманс, хочу знать ответ
так это, можно в том фром раскрыть скобочки?

Nikolay
05.01.2018
21:23:56
Привет! Начал новый проект для упрощения действий DBA, пока включает базовые вещи
https://github.com/NikolayS/PostgresDBA
Присылайте фидбэк, буду рад выслушать идеи
(лучше в личку, тут что-то слишком высокая активность!)

Petr
05.01.2018
21:24:19
прошу прощения за активность вызванную решением некоторой проблемы :)

Nikolay
05.01.2018
21:26:00
да не, я про вообще. этот чат сверхактивен уже очень давно

Evgeniy
05.01.2018
21:27:36


Nikolay
05.01.2018
21:35:22
хороший вопрос. на самом деле не совсем.
С одной стороны да — пока всё очень простое. но ведь и этого не было раньше, всё разбросано по разным местам.
во-первых часть скриптов нигде (ну, кроме моего github gist) не публиковалась. Например, генерация do/undo-миграций для прибивания ненужных индексов
во-вторых, я постепенно перерабатываю всем известные популярные скрипты (которые если чесно я за много лет уже задолбался копипастить, не знаю как вы) и делаю их более удобными — посмотрите на 2, b1, b2, они сильно модифицированы и стали, на мой взгляд, более удобными.
ну и постепенно будут добавляться новые штуки — только что добавил запуск по :dba,
появились "узкий" (по умолчанию, только самое главное, зато удобно на ноутбуке смотреть, умещается) и "широкий" режимы.
Ну и наконец, штука расширяемая — свои скрипты туда легко положить, перегенерить менюшку init/generate.sh и пользоваться по :dba.


dk
05.01.2018
21:39:41
Можно сделать меню цветным и добавить туда ASCII-графики

Nikolay
05.01.2018
21:39:48
Вот например банальное, размеры таблиц. Простые вещи — показать Total (сколько строк в вашей БД всего, в сумме по таблицам? а сколько сего индексы занимают?), доли каждой таблиц, индексных частей и TOAST, в процентах. Простая вещь, место много не заняла, но нигде не встречал. В общем-то, вот такие развития благодаря фидбэку получаются, когда разные мнения звучат.
к сожалению, нельзя, как раз на днях обсуждали в другом чате ? пока psql такого не умеет
ну то есть меню да, можно, я даже там чуток добавил цвета, но вот сами отчёты нет

Evgeniy
05.01.2018
21:41:11

Nikolay
05.01.2018
21:41:38
с графиками да, можно сильно извращаться (вот для особых любителей экзотики http://akorotkov.github.io/blog/2016/06/09/psql-graph/), но пока цель базовые вещи сделать

Evgeniy
05.01.2018
21:42:11
>посмотрите на 2, b1, b2
молодой человек!

Nikolay
05.01.2018
21:42:13
принятно, согласен что нет, планирую, но сначала форматы отчётов устаканить хочу

dk
05.01.2018
21:43:27
Черт, я думал, что толсто пошутил, ан нет...
Объективно - весь интерактив убрать (если только он не на curses написан), только in/out/err и параметры :)

Google

Nikolay
05.01.2018
21:48:07
и как это использовать? помнить имена файлов или что?

dk
05.01.2018
21:49:19
Ага

Nikolay
05.01.2018
21:49:25
ну никто не мешает
не запускайте :dba и даже не прописывайте его в .psqlrc :))

Petr
05.01.2018
22:41:31
ребята, если сделать update записи в колонке которой нет в индексе — постгрес же не пересчитывает индекс?

Darafei
05.01.2018
22:43:12
update - это delete и insert

Petr
05.01.2018
22:47:08
ок, спасибо)

Nikolay
05.01.2018
23:17:42
в первом приближении delete и insert. Но есть ещё HOT updates.
так что ответ "скорее всего не пересчитывает"
в системной вьюхе pg_stat_user_tables есть показатели, сколько обычных апдейтов случилось, сколько HOT

Petr
06.01.2018
04:19:51

Айтуар
06.01.2018
06:17:49

Petr
06.01.2018
06:20:41
Доброе утро!
1. Да, и последующий поиск по данных, как правило, в равной степени затрагивает как новые, так и старые данные
2. Партиции сделать не решение — это замедляет скорость поиска на два порядка и более в данном случае (при ≈500 партициях); про более подробную асимптотическую оценку было чуть выше

Айтуар
06.01.2018
06:23:14

Petr
06.01.2018
06:25:13
1ккк строк (даже больше) — это "первоначальный" массив данных, накопленный за десяток лет
С каждым годом он будет увеличиваться в худшем случае на ≈100-200кк максимум
Планируемый срок действия проекта от текущей даты — не более 10ти лет
Поэтому в конечном счёте данные вырастут, быть может, в два раза, или чуть больше
Но то трлн не дойдет :)

Айтуар
06.01.2018
06:30:44

Petr
06.01.2018
06:31:15
специфика проекта такая :)
не переписывать: закроется он

Айтуар
06.01.2018
06:32:02

Petr
06.01.2018
06:33:06
что-то вроде) подробнее к сожалению запрещает рассказать nda

Google

Айтуар
06.01.2018
06:34:54

Petr
06.01.2018
06:35:13
на текущий момент, кстати, созрело три решения проблемы (одно из которых товарищ @netneladno категорично минусует, а другое (MyRocks) рекомендует)
третье же достаточно просто:
оказалось, что есть возможность накапливать данные в течении месяца, и только раз в месяц делать вставку большой пачки аккумулированной информации
Также есть возможность выделить на это "санитарный день" условно говоря в последние выходные месяца

Andrey
06.01.2018
06:40:00

Petr
06.01.2018
06:42:12
да хоть нативные постгреса 10, хоть pg_pathman
там индексы на каждую партицию свои. можно общий индекс сделать только на ключ партиции — а оно мне не доступно, т.к. им может выступать только идентификатор очередной пачки данных (в моем случае)
при поиске же он в запросе не участвует -> сократить время поиска не поможет

Andrey
06.01.2018
06:43:39

Petr
06.01.2018
06:44:37
Мне в любом случае нужно будет пробежаться по всем партициям по определению особенностей моих данных :)

Andrey
06.01.2018
06:44:38
Если у вас много данных и искать нужно по разным условиям, может вам стоит посмотреть в сторону ClickHouse?

Petr
06.01.2018
06:46:37

Alex
06.01.2018
06:48:05
Такое ощущение что кто то пытается mpp в постгресе реализовать

Andrey
06.01.2018
06:48:05
Есть ещё такой вариант. Посмотрите расширение pmpp - оно позволяет одновременно выполнять запросы на разных базах. Вы можете попробовать размазать данные по нескольким базам и искать одновременно, а потом объединять результыта поиска. Такой map-reduce получается.

Alex
06.01.2018
06:48:58
Или plproxy

Andrey
06.01.2018
06:49:59
Если вам в любом случае надо сканировать все данные, лучше это распаралеллить каким-нибудь образом.

Petr
06.01.2018
06:50:30

Andrey
06.01.2018
06:50:43

Petr
06.01.2018
06:51:11
@dezconnect не знаком на первый взгляд с этим, посмотрю, спасибо!

Andrey
06.01.2018
06:51:31
Вместо одного большого сервера у вас будет N маленьких, где запросы будут выполняться параллельно, это будет быстрее.

Petr
06.01.2018
06:51:49

Google

Andrey
06.01.2018
06:52:27
Плюс возможно все индексы влезут в память, тогда будут очень быстро.

Alex
06.01.2018
06:52:28

Petr
06.01.2018
06:53:53

Alex
06.01.2018
06:54:22
Тогда страдайте

Petr
06.01.2018
06:54:38
ну, разумеется, параллельность всегда есть
тут подразумевалось в контексте одного select

Andrey
06.01.2018
06:55:20

Alex
06.01.2018
06:57:10
другая архитектура :)
Расскажите как вы это видите в контексте структур данных не привязываясь к какой либо БД ?

Petr
06.01.2018
06:57:12
ох уж эти виртуалки с докерами :)

Andrey
06.01.2018
06:57:37

Petr
06.01.2018
06:58:03
Вы пробовали?
нет, использую опыт других коллег
сам до таких экспериментов я не дошел в данной задаче

Alex
06.01.2018
06:58:52
Вставка и селект это вроде разные операции ?

Petr
06.01.2018
06:59:25
@pensnarik извиняюсь, вам известна постановка проблемы?

Сергей
06.01.2018
06:59:46
повтори еще раз пожалуйста
я забыл пока спал ? честно