powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Использование временных таблиц при потоковой репликации
17 сообщений из 17, страница 1 из 1
Использование временных таблиц при потоковой репликации
    #40025536
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Подскажите пожалуйста, можно ли обойти ограничение на использование временных таблиц на вторичной реплике?
Версия PG 11
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40025541
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не использовать временные таблицы.

Потоковая реплика строго RO, create temp table как любой create table пишет себя в системный каталог, итог закономерный.
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40025542
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij,

MS SQL server в режиме AlwayOn умеет работать с временными таблицами на вторичной реплике, наверняка и PG должен уметь. Может надо версию обновить или костыль есть какой-нибудь?
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40025556
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij
Потоковая реплика строго RO, create temp table как любой create table пишет себя в системный каталог, итог закономерный.
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40025595
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij,

Может есть вариант не реплицировать одну из БД?
Сделать отдельную БД например tmp и создавать временные таблицы в ней.
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40025616
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij
Потоковая реплика строго RO, create temp table как любой create table пишет себя в системный каталог, итог закономерный.

Ну так осталась мелочь: создать эти таблицы на мастере, подождать пока "запись в системный каталог" отреплицируется и всё, таблицей можно пользоваться на реплике.
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40025622
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
отреплицируется и всё, таблицей можно пользоваться на реплике.

Ну, пользуйтесь. А как этим можно воспользоваться сколь-либо полезным способом? Реплика всё так же RO.

Mandarin
может есть вариант не реплицировать одну из БД?

Нет, потоковая репликация строго всего кластера целиком.
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40025637
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И заменить временные таблицы нечем? Мне нужно хранить промежуточные результаты SQL в функциях.
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40025658
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarin
И заменить временные таблицы нечем? Мне нужно хранить промежуточные результаты SQL в функциях.


эм засунуть в массив и успокоится... ну если там у вас не гигабайты конечно промежуточных результатов
временные таблицы в pg для указанной вами задаче КРАЙНЕ дорогое решение кстати.

ps: в общем если у вас не ETL задачи вам временные таблицы в pg не нужны как правило.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40025882
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробую заменить временные таблицы на jsonb
Делаю так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
...
declare tmp_stat jsonb;
...
        select 
		jsonb_agg(
			jsonb_build_object(
				'f1', f1,
				'f2', f2
			)
		)	
	from table
	into tmp_stat;

...

        select ts.value->>'f1', ts.value->>'f2'	
	from jsonb_array_elements(tmp_stat) ts

        select count(*)	
	from jsonb_array_elements(tmp_stat) ts   


Хочу сократить количество вызовов jsonb_array_elements, например определить переменную, задать ей значение jsonb_array_elements(tmp_stat). Подскажите какой тип указать для переменной если функция jsonb_array_elements возвращает setof jsonb?
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40025951
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij
Реплика всё так же RO.

Это распространяется и на временные таблицы? Зачем???
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40025986
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Melkij
Реплика всё так же RO.

Это распространяется и на временные таблицы? Зачем???

Не "зачем", а "почему".
Отвязывать от системного каталога и обучать все релевантные места (в первую очередь планировщик, executor, alter'ы и analyze) что части таблиц может внезапно не быть в системном каталоге и это типа нормально - геморроя очень много.
С вариантом сходить на мастер и создать времянку там, а пользовать потом на реплике - геморроя будет весьма не меньше.
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40026382
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij
Отвязывать от системного каталога и обучать все релевантные места (в первую очередь планировщик, executor, alter'ы и analyze) что части таблиц может внезапно не быть в системном каталоге и это типа нормально - геморроя очень много.

Так и не надо системный каталог трогать. Достаточно данные временных таблиц хранить вне основной базы.
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40026391
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Melkij
Отвязывать от системного каталога и обучать все релевантные места (в первую очередь планировщик, executor, alter'ы и analyze) что части таблиц может внезапно не быть в системном каталоге и это типа нормально - геморроя очень много.

Так и не надо системный каталог трогать. Достаточно данные временных таблиц хранить вне основной базы.


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

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40026833
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk
Dimitry Sibiryakov
пропущено...

Так и не надо системный каталог трогать. Достаточно данные временных таблиц хранить вне основной базы.


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

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru


У MSSQL в отдельно БД, называется tempdb. Очень удобно когда на вторичной реплике можно использовать временные таблицы.
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40026838
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk
а где по вашему живет структура временных таблиц и статистика по ним?
это кстати почему очень дорого их часто создавать и удалять - системный каталог пухнет почти неконтролируемо

А зачем их создавать и удалять часто? Это же GTT, а не LTT. Или у аффтара именно LTT?..

А статистика к ним должна храниться в ОЗУ, разве нет?..
...
Рейтинг: 0 / 0
Использование временных таблиц при потоковой репликации
    #40026924
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Maxim Boguk
а где по вашему живет структура временных таблиц и статистика по ним?
это кстати почему очень дорого их часто создавать и удалять - системный каталог пухнет почти неконтролируемо

А зачем их создавать и удалять часто? Это же GTT, а не LTT. Или у аффтара именно LTT?..

А статистика к ним должна храниться в ОЗУ, разве нет?..


статистика хранится по всем объектам в общем каталоге (включая временные)
там же храниться структура всего (и опять включая временные таблицы)
на реплике каталог (да и все остальное) полностью readonly
поэтому создавать временные таблицы на реплике не выйдет
создать их на мастере получится но временная таблицы только в пределах создавшей ее сессии видна так что на реплике их видно и доступно не будет
(несмотря на то что соответствующие записи в каталоге будут)

концепции tempdb в postgresql НЕТ... как обычно patches welcome (но эта задача ну совсем не для новичков а для покрытых шрамами седых ветеранов разработки postgresql с ожиданием того что если оно и попадет в mainstream то года через 2-3 в лучшем случае).

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Использование временных таблиц при потоковой репликации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]