Size: a a a

pgsql – PostgreSQL

2020 August 05

РЖ

Роман Жарков... in pgsql – PostgreSQL
Alexander Nikitin
ну разработчикам я передал информацию, что с ними что-то не то.
lwlocks - больной вопрос в принципе :)
источник

A

Alex in pgsql – PostgreSQL
Ребят, всем привет, может быть кто то может помочь, есть два вопроса: 1) можно ли в PG в реплике партицировать таблицу, если в мастере они не партицированы?  2) и можно ли без сторонних расширений организовать автоматическое создание новых партиций при разбиении по интервалам значений (например по интервалам дат)?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alex
Ребят, всем привет, может быть кто то может помочь, есть два вопроса: 1) можно ли в PG в реплике партицировать таблицу, если в мастере они не партицированы?  2) и можно ли без сторонних расширений организовать автоматическое создание новых партиций при разбиении по интервалам значений (например по интервалам дат)?
Нет (если это про физическую репликацию) и скорее нет (по крайней мере, нужно что-то, что будет запускаться по расписанию для их создания, тут подойдёт и cron, в принципе, который хоть и не расширение, но всё равно что-то "внешнее").
Конечно, можно попробовать написать триггер, который создавал бы их заранее (т.е., к примеру, если INSERT начинает новый день, то создаётся partition для послезавтрашнего).
источник

A

Alex in pgsql – PostgreSQL
А если логическая репликация и свой драйвер, или как там это называется, то можно?
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Нет.
Да. Я делал триггер, который ловил попытки вставки в несуществующую партицию и создавал её на лету.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alex
А если логическая репликация и свой драйвер, или как там это называется, то можно?
Можно, но это же уже не primary/replica, строго говоря.
И с этим проблем можно тоже достаточно получить на свою голову (подумайте, что Вы будете делать при disasters).
источник

A

Alex in pgsql – PostgreSQL
Yaroslav Schekin
Можно, но это же уже не primary/replica, строго говоря.
И с этим проблем можно тоже достаточно получить на свою голову (подумайте, что Вы будете делать при disasters).
Очевидно, плакать, спасибо за ответы всем)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Роман Жарков
Нет.
Да. Я делал триггер, который ловил попытки вставки в несуществующую партицию и создавал её на лету.
Крутовато это, мне кажется. Я к тому, что нередко смешивание DDL и DML в одной транзакции до добра не доводит.
И проблем не было?
источник

A

Alex in pgsql – PostgreSQL
первое нет особенно расстраивает) тогда ещё вопрос в догонку: какой лучший вариант без сторонних расширений есть для того, чтобы в живой БД партицировать таблицу без остановки записи в неё? тоже через триггеры видимо с созданием второй партицированной таблицы, отловом чтений/записи и параллельным переливом данных?
источник

A

Alex in pgsql – PostgreSQL
Это мне следом вопрос прилетел, я переслал ваши ответы)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alex
первое нет особенно расстраивает) тогда ещё вопрос в догонку: какой лучший вариант без сторонних расширений есть для того, чтобы в живой БД партицировать таблицу без остановки записи в неё? тоже через триггеры видимо с созданием второй партицированной таблицы, отловом чтений/записи и параллельным переливом данных?
А почему без расширений-то?
Вы хотите лично изобрести тот велосипед, который годами изобретали и тестировали в pg_partman?
И конечно же, у Вас получится лучше? ;)
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Yaroslav Schekin
Крутовато это, мне кажется. Я к тому, что нередко смешивание DDL и DML в одной транзакции до добра не доводит.
И проблем не было?
Ну, это только одна такая транзакция по факту получается. Остальные ждут создания.
Как-то я напортачил с check constraint и часовыми поясами.
Вот тут возникла проблема, когда один из разработчиков подключился умным клиентом к базе напрямую :)
источник

A

Alex in pgsql – PostgreSQL
Yaroslav Schekin
А почему без расширений-то?
Вы хотите лично изобрести тот велосипед, который годами изобретали и тестировали в pg_partman?
И конечно же, у Вас получится лучше? ;)
Не знаю, если без расширений, значит есть на это какой-то особый заказ)

Видимо, база уже настолько древняя, что в неё хрен что выпихнешь на лету
источник

A

Alex in pgsql – PostgreSQL
Yaroslav Schekin
А почему без расширений-то?
Вы хотите лично изобрести тот велосипед, который годами изобретали и тестировали в pg_partman?
И конечно же, у Вас получится лучше? ;)
потому что на AWS RDS сторонние расширения за пределами поддерживаемого списка поставить нельзя

там банального pg_cron до сих пор нет, который уже 4 года у них просят
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alex
потому что на AWS RDS сторонние расширения за пределами поддерживаемого списка поставить нельзя

там банального pg_cron до сих пор нет, который уже 4 года у них просят
Так это полугресс какой-то получается. ;)
Тем не менее, я намекал на то, что если так уж хочется без расширений, то стоит содрать черпать вдохновение из pg_partman.
источник

NB

Nick Belous in pgsql – PostgreSQL
Нужно инсертнуть множество столбцов из одной таблицы в другую, игнорируя один определенный столбец из таблицы, откуда переливаю данные. Не могли бы подсказать, как?
источник

XN

Xeon Null in pgsql – PostgreSQL
Nick Belous
Нужно инсертнуть множество столбцов из одной таблицы в другую, игнорируя один определенный столбец из таблицы, откуда переливаю данные. Не могли бы подсказать, как?
Создай таблицу вставь в нее с вырезанием ненужных столбцов и копирни в целевую
источник

NB

Nick Belous in pgsql – PostgreSQL
Xeon Null
Создай таблицу вставь в нее с вырезанием ненужных столбцов и копирни в целевую
Спасибо
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Скопировать всё и дропнуть лишнее поле :)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Nick Belous
Нужно инсертнуть множество столбцов из одной таблицы в другую, игнорируя один определенный столбец из таблицы, откуда переливаю данные. Не могли бы подсказать, как?
Явно указать все поля в INSERT и SELECT, и всё.
источник