172 похожих чатов

> С чего вы вообще взяли, что запросы будут попадать

именно в один партишон.

Во-первых, я не говорил что оьязательно в одну; хорошо, если отсекает часть партиций.
А чтобы это работало - надо писать так запросы, чтобы партиции прунились.

> нет, ничего подобного, перечитайте его сообщение.
С таким подходом, можно сказать, что и индексы могут не работать (тут уж как планнер решит). Может не будем их создавать?

В ПГ12 - очень много улучшений по перформансу с запросами по партициям (втч инсерты)
https://www.2ndquadrant.com/en/blog/postgresql-12-partitioning/

> Вы доверяете "мифам"
Справедливости ради, тут уже стоит общаться цифрами.
Я видел приличное ускорение при переключении на партиции.
Понятно, что не бывает магии, и партиционирование добавляет оверхед (который в пг12 сильно снизился). Так вот, чтобы его использовать надо строить модель данных так, чтобы можно было использовать прунинг.

Если дойдут руки, я соберу pgbench сценарий, чтобы мы могли поговорить цифрами, сейчас мы с вами общаемся просто субьективными "ощущениями"

2 ответов

10 просмотров

> Во-первых, я не говорил что оьязательно в одну; хорошо, если отсекает часть партиций. А как насчёт случая "это добавляет N проходов по индексу туда, где их раньше не было?". Вот тот мой пример, пусть у Вас есть ledger transactions, партиционированы по timestamp (помесячно, например), и Вам нужно выбрать все по какому-то клиенту за какие-то даты (затрагивающие несколько partitions)? И прочие подобные? > А чтобы это работало - надо писать так запросы, чтобы партиции прунились. Т.е. если где-то запросы невозможно так написать — им что делать? (Но вообще, конечно, подход правильный, если это возможно и партиционирование уже пришлось использовать.) > С таким подходом, можно сказать, что и индексы могут не работать (тут уж как планнер решит). Может не будем их создавать? Стоп! ;) Вы шутите или всё ещё не поняли, о чём я пишу? > В ПГ12 - очень много улучшений по перформансу с запросами по партициям (втч инсерты) Да, я знаю. Уже даже и bug reports писал по этим улучшениям. ;)

> Справедливости ради, тут уже стоит общаться цифрами. Да, было бы неплохо. Только не contrived benchmarks (в которых можно показать "преимущество" почти чего угодно над чем угодно, лишь бы сферы применения пересекались), как это любят делать, рассказывая о преимуществах partitioning, а что-то адекватное реальной жизни. > Я видел приличное ускорение при переключении на партиции. А я видел и приличное замедление. > Понятно, что не бывает магии, и партиционирование добавляет оверхед (который в пг12 сильно снизился). Но всё ещё выше, чем у индексации (это не считая его всё ещё неполной реализации, и ошибок в нём). И так, в общем, и должно быть. > Так вот, чтобы его использовать надо строить модель данных так, чтобы можно было использовать прунинг. Это если удастся. А то могут получиться подпорки под костыли. ;)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта