Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / забавная фича pg_prepared_statements / 8 сообщений из 8, страница 1 из 1
06.07.2015, 17:53
    #39000811
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
забавная фича pg_prepared_statements
pg_prepared_statements

авторstatement text The query string submitted by the client to create this prepared statement. For prepared statements created via SQL, this is the PREPARE statement submitted by the client. For prepared statements created via the frontend/backend protocol, this is the text of the prepared statement itself.

на самом деле там будет валяться ВЕСЬ стейтмент . если это батч -- будет весь батч. [т.е. current_query()]

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
BEGIN;
DEALLOCATE ALL;
PREPARE FOO1 (text) AS  SELECT  '1.'||$1;
PREPARE FOO2 (text) AS  SELECT  '2.'||$1;
END;
SELECT * FROM pg_prepared_statements;
------------------------------
'foo1';'BEGIN;
DEALLOCATE ALL;
PREPARE FOO1 (text) AS  SELECT  '1.'||$1;
PREPARE FOO2 (text) AS  SELECT  '2.'||$1;
END;
SELECT * FROM pg_prepared_statements;';'2015-07-06 17:41:56.855617+03';'{text}';t
'foo2';'BEGIN;
DEALLOCATE ALL;
PREPARE FOO1 (text) AS  SELECT  '1.'||$1;
PREPARE FOO2 (text) AS  SELECT  '2.'||$1;
END;
SELECT * FROM pg_prepared_statements;';'2015-07-06 17:41:56.855617+03';'{text}';t




что, впрочем, не мешает выполняться по вызову только самому стейтменту.

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

надо будет нарезать сами стейтменты на loop-е. "отдельными стейтментами", т.с.

а англичане, меж тем, ружья кирпичом не чистятЪ1111
...
Рейтинг: 0 / 0
06.07.2015, 18:00
    #39000819
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
забавная фича pg_prepared_statements
qwwq<>надо будет нарезать сами стейтменты на loop-е. "отдельными стейтментами", т.с.
ашипка вышел -- это же один SQL--динамо. исполняемый пачкой. как в нем отдельно стоящий loop нарисовать -- х.з.

не выходит каменный цветок.
придется таки с клиента все это делать. а не на сервере. если делать.
вот жишь до чего довёл планету этот фигляр пж
...
Рейтинг: 0 / 0
09.07.2015, 01:11
    #39002973
Warstone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
забавная фича pg_prepared_statements
qwwq,

dblink к самому себе с шарингом транзакции ))
...
Рейтинг: 0 / 0
09.07.2015, 01:11
    #39002974
Warstone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
забавная фича pg_prepared_statements
Больше извращений богу извращений
...
Рейтинг: 0 / 0
09.07.2015, 10:41
    #39003145
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
забавная фича pg_prepared_statements
Warstoneqwwq,

dblink к самому себе с шарингом транзакции ))

можно, но там мыслился аккуратный выборочный DEALLOCATE , у которого нет "IF EXISTS" , а стало быть только через динамику в анонимном блоке. -- т.е. "пакет" должен будет представлять собой анонимный блок с вызовом через dblink чеков тамошнего набора стейтментов, с [уничтожением и ] созданием каждого отдельным стейтментом, а потом -- пересылку батча в то же соединение 100--тыщщ--мильонов символов в dblink. т.е. 2 раза передаем весь пакет -- в вызов, собственно, и в дблинк -- потом. А это -- дорого, думается.

при этом, если мы подымаем соединение автономии под задачу -- делать в нём "аккуратный deallocate" -- бесмыссленно -- это соединение наше заведомо под контролируемую только нами задачу -- там можно и не церемониться

пока сделал тупо deallocate all; в батче.
//пг_препаред_ст-тс -- вьюха, и каррент стейтмент там не хранится, слава яйцам, а вот опрос её -- дорог, потому что это вьюха на функции, и функция будет возвращать миллионы символов в поле, которое не опрашивается. -- избавляемся от опроса => нема проблем

вроде шустро получилось -- порядок (десятичный), как минимум, сэкономил. правда там не чистые insert/update/delete, а самопальные мерджи со сложным условием [помесь репликации с синхронизацией]. особо радует -- что на очень большом батче без препаред сервер тупо уходит в recovery [настройки памяти оптимистические, судя по всему] -- а с препарами -- оттарабахивает за несколько сек, и не жужжит.

но самое смешное -- всё это [пока] для того, чтобы проверить, как это будет работать в случае динамического партицирования. (когда набор партиций, лежащих под "таблицей" меняется в процессе обработки стейтментов батча--транзакции, а стейтменты отпрепарены только в её начале.

-- написать -- написал, теперь думать буду, как это протестировать на непротиворечивость и устойчивость к "динамическому" партицированию.
...
Рейтинг: 0 / 0
09.07.2015, 14:18
    #39003458
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
забавная фича pg_prepared_statements
qwwq,

Мсье знает толк в извращениях. :)
То что на выходе получится кто то кроме вас сможет понять и поддерживать?
А через 3 года?

PS: 15 лет работы с Postgresql приучили к тому что самые простые и дубовые решения лучше всего если они обеспечивают приемлемую производительность (так как были моменты когда через 3 года после запуска я не мог понять как работает особо хитрая система написанная лично мной в подобном стиле :)).

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
09.07.2015, 17:27
    #39003798
ОКТОГЕН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
забавная фича pg_prepared_statements
Maxim Boguk, судя по его вопросам в топике, человек экспериментирует на тестовой
машине. Это нормально, тоже так делаю. Как-то ради прикола пробовал воспроизвести
даже примеры с мутирующими таблицами из ораклового учебника. Не получилось-:)
Фракталы Мандельброта зато получались ничё так.
...
Рейтинг: 0 / 0
09.07.2015, 17:27
    #39003799
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
забавная фича pg_prepared_statements
Maxim Boguk> самые простые и дубовые решения лучше всего<

двумя руками за
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / забавная фича pg_prepared_statements / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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