Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
Как работать с временными таблицами в функциях? надо ли удалять перед созданием? DROP TABLE IF EXISTS table1; Не будет ли конфликтов, если функция будет вызвана одновременно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2016, 11:54 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
Временные таблицы (create temporary table) существуют только в пределах сессии (или даже только в пределах транзакции, если объявлены как ON COMMIT DROP). Поэтому параллельный вызов двух хранимок невозможен вообще никак. Надо ли удалять - зависит от общего workflow. Мы же не знаем, зачем вам вообще понадобилась временная таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2016, 12:08 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
MelkijВременные таблицы (create temporary table) существуют только в пределах сессии (или даже только в пределах транзакции, если объявлены как ON COMMIT DROP). Поэтому параллельный вызов двух хранимок невозможен вообще никак. Надо ли удалять - зависит от общего workflow. Мы же не знаем, зачем вам вообще понадобилась временная таблица. Она нужна временно только в пределах функции. То есть, если я создам ее begin create table xxx .... ON COMMIT DROP; end; то проблем не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2016, 12:47 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинMelkijВременные таблицы (create temporary table) существуют только в пределах сессии (или даже только в пределах транзакции, если объявлены как ON COMMIT DROP). Поэтому параллельный вызов двух хранимок невозможен вообще никак. Надо ли удалять - зависит от общего workflow. Мы же не знаем, зачем вам вообще понадобилась временная таблица. Она нужна временно только в пределах функции. То есть, если я создам ее begin create table xxx .... ON COMMIT DROP; end; то проблем не будет проблем не будет но не советую злоупотреблять временными таблицами без серьезного повода, очень дорогая штука для базы (в том смысле что если хранимка вызывается 100 раз в секунду то не надо в ней временные таблицы использовать, это к проблемам с системными каталогами). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2016, 13:30 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
Maxim BogukРолг Хупинпропущено... Она нужна временно только в пределах функции. То есть, если я создам ее begin create table xxx .... ON COMMIT DROP; end; то проблем не будет проблем не будет но не советую злоупотреблять временными таблицами без серьезного повода, очень дорогая штука для базы (в том смысле что если хранимка вызывается 100 раз в секунду то не надо в ней временные таблицы использовать, это к проблемам с системными каталогами). эта функция не 100 раз в секунду, но надо будет подумать как избежать. При этом я знаю, что в эту таблицу может быть вставлено не больше 1000 записей. Вот, если бы было что-то типа таблиц-переменных как в SQL Server ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2016, 13:49 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинMaxim Bogukпропущено... проблем не будет но не советую злоупотреблять временными таблицами без серьезного повода, очень дорогая штука для базы (в том смысле что если хранимка вызывается 100 раз в секунду то не надо в ней временные таблицы использовать, это к проблемам с системными каталогами). эта функция не 100 раз в секунду, но надо будет подумать как избежать. При этом я знаю, что в эту таблицу может быть вставлено не больше 1000 записей. Вот, если бы было что-то типа таблиц-переменных как в SQL Server] Если очень надо можно array of records всегда сделать да (и будет вам почти таблица-переменная). Но вообще в readonly задачах временные таблицы не нужны в 99.9% случаев, а RW обычно не очень часто вызываются. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2016, 14:08 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk Если очень надо можно array of records всегда сделать да (и будет вам почти таблица-переменная). Но вообще в readonly задачах временные таблицы не нужны в 99.9% случаев, а RW обычно не очень часто вызываются. www.postgresql-consulting.ru Как с массивом работать? С ним же нельзя работать как с таблицей, выборки делать и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2016, 08:10 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
Еще вопрос: когда могут быть полезны ON COMMIT DELETE ROWS; ON COMMIT PRESERVE ROWS; ? Я так понимаю, что таблица живёт в клиентской сессии, а в ней можеть быть несколько транзакций, и таким образом можно использовать темп таблицу в разных транзакциях, функциях и т.д. и передавать данные (ON COMMIT PRESERVE ROWS) А еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2016, 08:12 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинMaxim Boguk Если очень надо можно array of records всегда сделать да (и будет вам почти таблица-переменная). Но вообще в readonly задачах временные таблицы не нужны в 99.9% случаев, а RW обычно не очень часто вызываются. www.postgresql-consulting.ru Как с массивом работать? С ним же нельзя работать как с таблицей, выборки делать и т.п. Магическая функция unnest поможет с этой проблемой. https://www.postgresql.org/docs/9.5/static/functions-array.html -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2016, 09:27 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинЕще вопрос: когда могут быть полезны ON COMMIT DELETE ROWS; ON COMMIT PRESERVE ROWS; ? Я так понимаю, что таблица живёт в клиентской сессии, а в ней можеть быть несколько транзакций, и таким образом можно использовать темп таблицу в разных транзакциях, функциях и т.д. и передавать данные (ON COMMIT PRESERVE ROWS) А еще? Еще при работе через pgbouncer бывает нужно когда временную таблицу создают в начале сессии средствами pgbouncer и далее она существует все это время с delete rows on commit и не надо в транзакциях и хранимках париться и ее создавать (она просто всегда уже создана с нужной структурой заранее). Или даже без pgbouncer приложение при коннекте создает времянку и далее с ней работает не создавая ее заново на каждый чих. Такие времянки сииильно дешевле для базы чем те что постоянно создаются и дропаются и их можно использовать с 1000tps блоках. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2016, 09:36 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
Maxim BogukТакие времянки сииильно дешевле для базы чем те что постоянно создаются и дропаются и их можно использовать с 1000tps блоках. Только вот TRUNCATE этих времянок не сильно дешев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2016, 10:14 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
g2099599Maxim BogukТакие времянки сииильно дешевле для базы чем те что постоянно создаются и дропаются и их можно использовать с 1000tps блоках. Только вот TRUNCATE этих времянок не сильно дешев. Сильно дешевле чем on commit drop с распуханием pg_catalog неконтролируемым. PS: а почему вы считаете что truncate временных таблиц дорогой? Они же не в shared buffers живут и не требуют их сканирования при truncate. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2016, 10:27 |
|
||
|
Temporary tables в функциях
|
|||
|---|---|---|---|
|
#18+
Maxim BogukСильно дешевле чем on commit drop с распуханием pg_catalog неконтролируемым. PS: а почему вы считаете что truncate временных таблиц дорогой? Они же не в shared buffers живут и не требуют их сканирования при truncate. Потому что сервер должен слазить в ФС и создать новый файл для таблицы. Отдельно обращу внимание на https://github.com/postgrespro/pg_variables , во многих случаях удобнее и без оверхеда со временными таблицами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2016, 15:49 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=86&tid=1997029]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 161ms |

| 0 / 0 |
