Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
02.12.2020, 12:47
|
|||
---|---|---|---|
|
|||
проблемы с транзакцией при использовании dblink |
|||
#18+
Коллеги, привет. Такое дело. В анонимном блоке(потом хочу впихнуть в процедуру), в цикле, тяну данные из другой БД того же кластера по dblink маленькими кусочками. По схеме: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Так вот, заметил что pg_stat_activity для этого dblink на каждом шаге цикла показывает один и тот же backend_xmin. А это значит что индексы будут пухнуть в БД из которой тяну данные. (выполняется цикл минут 20, несколько итераций). Скажите как корректно организовать запрос данных в цикле через dblink чтобы в БД, из которой тяну не пухли индексы? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.12.2020, 12:48
|
|||
---|---|---|---|
|
|||
проблемы с транзакцией при использовании dblink |
|||
#18+
Причем, вставление коммитов ничего не меняет: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.12.2020, 23:33
|
|||
---|---|---|---|
|
|||
проблемы с транзакцией при использовании dblink |
|||
#18+
Синий Слон Причем, вставление коммитов ничего не меняет: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
включаем полный лог запросов на базе смотрим что dblink отправляет в базе куда соединяется думаем или присылаем сюда для анализа. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.12.2020, 02:22
|
|||
---|---|---|---|
|
|||
проблемы с транзакцией при использовании dblink |
|||
#18+
Maxim Boguk Синий Слон Причем, вставление коммитов ничего не меняет: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
включаем полный лог запросов на базе смотрим что dblink отправляет в базе куда соединяется думаем или присылаем сюда для анализа. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru Максим, я и так знаю что dblink отправляет. Он отсылает простой короткий селекс типа: SELECT guid FROM table WHERE id<число. Никаких изменений не делает в той БД куда идет. Коннект закрывается каждый раз. Не могу понять почему backend_xmin в этом коннекте в БД откуда тянет всегда одинаковый (( Моя задача сделать так чтобы при этой ооперации не пухли индексы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.12.2020, 08:51
|
|||
---|---|---|---|
|
|||
проблемы с транзакцией при использовании dblink |
|||
#18+
Синий Слон, Эм странный вопрос... кластер то один ("из другой БД того же кластера")... и xmin горизонт у него естественно общий для всех баз. А у вас в другой транзакции висит анонимный блок работающий который через dblink читает. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.12.2020, 14:16
|
|||
---|---|---|---|
|
|||
проблемы с транзакцией при использовании dblink |
|||
#18+
Maxim Boguk Синий Слон, Эм странный вопрос... кластер то один ("из другой БД того же кластера")... и xmin горизонт у него естественно общий для всех баз. А у вас в другой транзакции висит анонимный блок работающий который через dblink читает. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru При этом индексы в БД, не где блок, а откуда короткими транзакциями данные селектом тянуться, снапшот держится? Как же реализовать чтобы индексы в БД, из которой селекты, не пухли? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.12.2020, 00:25
|
|||
---|---|---|---|
|
|||
проблемы с транзакцией при использовании dblink |
|||
#18+
Вообще запутался. Специально разбил огромный и долгий селект на маленькие порции и вынес обработку из оперативной БД, чтобы снепшот не держался. А он оказывается все равно держится :-((( ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.12.2020, 15:01
|
|||
---|---|---|---|
|
|||
проблемы с транзакцией при использовании dblink |
|||
#18+
Синий Слон Вообще запутался. Специально разбил огромный и долгий селект на маленькие порции и вынес обработку из оперативной БД, чтобы снепшот не держался. А он оказывается все равно держится :-((( вопрос какой xmin используется для отсечки - глобальный по кластеру или локальный для базы (в коде есть и то и другое) интересен и его лучше и быстрее просто экспериментом проверить... если таки глобальный (что было бы странно но возможно) - вариантов у вас два 1)вынести обработку на другой физический кластер 2)сделать обработку через процедуру которая сама внутри коммитить будет походу дела а тогда и извращения с dblink не нужны (и разбивать работу на много независимых транзакций в одной процедуре). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=1994335]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
144ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 303ms |
total: | 529ms |
0 / 0 |