LINUX.ORG.RU

Принципы работы партицирование в postgres

 


0

2

Не пойму, почему партицирование быстрее? Ведь если мы разбиваем табличку например на 3 части например по category_id, а записи ищем по полю title, то при партицировании он залезет во все 3 таблицы, а без него - только в одну. Или если таблицы резать на части, то запросы делать нужно по тому принципу, по которому они разрезаны?


Ответ на: комментарий от anonymous

Да. И что делает постгрес непригодным для партиционирования в отсутствие IOT?

Наоборот, отсутствие IOT делает PostgreSQL пригодным для партиционирования в некоторых ситуациях.

Это хорошо или плохо?

Это просто иначе.

Не уверен. Это вроде как устраняет write amplificaion

Да.

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

Зачем вообще перестраивать индексы после нарезки новой партиции (вот в PostgreSQL вообще ничего не перестраивается, т.к. индексы только локальны внутри partition)?

Но, для селектов добавляется ещё одна операция на индексе (отмечено в ответе слонятки Уберу, на который я ссылался выше),

Да, иногда добавляется. А иногда убирается выборка из heap (так как его нет — profit!).

и производительность инсертов/апдейтов под вопросом

На практике — почти всегда несущественно.

поскольку это может привести к перестраиванию индекса и миграции строк между блоками данных.

Конечно может, да и приводит, естественно. Только вот... раз в сколько INSERT-ов это происходит, при «типичном» размере row? И это самое перестраивание почти всегда состоит из записи 2 страниц.

Если у нас данные поступают в OLTP-режиме, а потом мы по ним гоняем какую-то аналитику или бухгалтерию, то для рилтаймовой части такие затупы могут оказаться неприемлемыми.

В таком случае, стоит перестать размещать базу на тостерах и подобном «мощном железе». ;) Т.е. в качестве практического довода это просто смешно.

Но, что характерно, ничто из сказанного вами не опровергает того простого факта, многократно подтвержденного самыми разными пытливыми умами в их тестах, и заключающегося в том, что партиционирование обычных таблиц, там где оно применяется уместно, даёт профит даже без этих ваших сомнительных IOT.

Вам сколько раз надо повторить, что неиспользование IOT — это одна из причин, по которой партиционирование может давать «профит»?

И, кстати, опять начинается. :( А ничто из сказанного вами не опровергает того простого «факта», многократно подтвержденного самыми разными пытливыми умами в их тестах, и заключающегося в том, что гомеопатия крайне эффективна (например) там где она применяется уместно, даёт профит...

Сколько можно демагогии? Конкретные ссылки на сравнительные benchmarks, про конкретно обсуждавшийся PostgreSQL, тут появятся или нет?!

Но отсутствие IOT не ставит крест на партиционировании же.

Его использование ставит на партиционировании полкреста. ;)

Ну так ссылку давайте что именно читать. Где написано что листва этих ваших деревьев хранится каким-то особенным способом, а не разбросана как попало блоками по файловой системе?

Разбросана, но далеко не «как попало», в типичных случаях. Кстати про «разбросана», что, в Oracle возможность использования SSD ещё не завезли? ;)

Это ещё и ваша проблема: ведь это вы пока не смогли донести до меня свою мысль.

А вы не пробовали читать внимательнее, вдумчивее как-то? ;)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.