@pgsql

Страница 623 из 1062
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?

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

Alex
05.01.2018
19:49:31
а что будет если выключить netsted loop
всмысле без последнего селекта ?

Evgeniy
05.01.2018
19:49:35
объединить две партиции в одну
это будет чтото среднее между дублированием всей таблички и пенальти с кучей табличек

всмысле без последнего селекта ?
set enable nested_loop = off; но вообще проблема в эстимации результата 10к vs 1.5kk

немножно в сто раз ошиблись

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

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
да не, я про вообще. этот чат сверхактивен уже очень давно

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 такого не умеет

ну то есть меню да, можно, я даже там чуток добавил цвета, но вот сами отчёты нет

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

Айтуар
06.01.2018
06:17:49
скорее всего 40млн новых данных у меня будет накапливаться максимум раз в месяц или даже реже
1. Что-то я не пойму, у вас эти данные вечно хранить нужно? 2. А партиции сделать не решение? Там на каждую партицию свой индекс. Создавайте, удаляйте, как угодно. Правда только 1к партиций можно сделать.

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

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

Планируемый срок действия проекта от текущей даты — не более 10ти лет Поэтому в конечном счёте данные вырастут, быть может, в два раза, или чуть больше

Но то трлн не дойдет :)

Айтуар
06.01.2018
06:30:44
Но то трлн не дойдет :)
А ну ладно тогда. Хм, 10 лет. А потом всё переписывать?))

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
что-то вроде) подробнее к сожалению запрещает рассказать nda
Да знаю. Сам делал приборы для скважин. Видимо как раз для них проект.

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

третье же достаточно просто: оказалось, что есть ​возможность накапливать данные в течении месяца, и только раз в месяц делать вставку большой пачки аккумулированной информации Также есть возможность выделить на это "санитарный день" условно говоря в последние выходные месяца

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

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

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

Мне в любом случае нужно будет пробежаться по всем партициям по определению особенностей моих данных :)
Тогда вам партиции нужны по сути только для упрощения обслуживания таблиц.

Petr
06.01.2018
06:46:37
Если у вас много данных и искать нужно по разным условиям, может вам стоит посмотреть в сторону ClickHouse?
Смотрели: это рассматривалось еще до постгреса — не подошло :( Индексов у меня много (≈7, и это мультиколумн), поиск — точный В общем никаких преимуществ он не дал

Тогда вам партиции нужны по сути только для упрощения обслуживания таблиц.
иными словами — смотреть в их сторону для решения данной задачи смысла нет

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
Если вам в любом случае надо сканировать все данные, лучше это распаралеллить каким-нибудь образом.

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
Вместо одного большого сервера у вас будет N маленьких, где запросы будут выполняться параллельно, это будет быстрее.
что-то слишком сложно выглядит, никто мне "много маленьких серверов" не выделит :) индексы в память не влезут, они весят 50% от размера самой таблицы (все-таки их 7)

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

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

тут подразумевалось в контексте одного select

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

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

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

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

Сергей
06.01.2018
06:59:46
повтори еще раз пожалуйста

я забыл пока спал ? честно

Страница 623 из 1062