Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Хранимая процедура с прогрессом
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня. Прошу направить, как правильнее сделать. Задача такая: Есть 50тысяч клиентов. Необходимо написать процедуру, смысл которой Берем первую с 1 по 1000 клиентов, собираем по ним все данные, делам по каждому кучу работы, данные складываем в другие таблицы, делаем коммит. Берем первую с 1001 по 2000 клиентов, собираем по ним все данные, делам по каждому кучу работы, данные складываем в другие таблицы, делаем коммит. и тд Вся процедура будет выполняться несколько часов, поэтому в IDE ее выполнить не получится, придется запускать в линуксе в режиме screen. Основные вопросы - как правильнее написать чтоб через каждые 1000 строк делать коммит и как выводить прогресс, то есть отношение обработанных клиентов к общему числу клиентов. На postgresql такое не сделать? Писать скрипт например на питоне? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2021, 09:43 |
|
||
|
Хранимая процедура с прогрессом
|
|||
|---|---|---|---|
|
#18+
создать таблицу в которую хранимка будет писать ID обработанных клиентов. в случае сбоя при перезапуске начинать со следующего необработанного. мониторить запросами к этой таблице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2021, 16:45 |
|
||
|
Хранимая процедура с прогрессом
|
|||
|---|---|---|---|
|
#18+
Misha111 создать таблицу в которую хранимка будет писать ID обработанных клиентов. в случае сбоя при перезапуске начинать со следующего необработанного. мониторить запросами к этой таблице коммит будет только в конце процедуры и в этой таблице данные мы увидим только после того, как процедура полностью отработает. Так можно было бы и по таблицам смотреть, куда данные по каждому клиенту складываются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2021, 13:51 |
|
||
|
Хранимая процедура с прогрессом
|
|||
|---|---|---|---|
|
#18+
kliff Misha111 создать таблицу в которую хранимка будет писать ID обработанных клиентов. в случае сбоя при перезапуске начинать со следующего необработанного. мониторить запросами к этой таблице коммит будет только в конце процедуры и в этой таблице данные мы увидим только после того, как процедура полностью отработает. Так можно было бы и по таблицам смотреть, куда данные по каждому клиенту складываются. ну так используйте не функцию а процедуру где можно commits делать https://www.postgresql.org/docs/13/plpgsql-transactions.html или через dblink дергайте своей функцией в цикле другую функцию которая по 1000 клиентов обрабатывает (такой себе костыль для замены процедур с транзакциями на старых версиях базы). при этом все равно нужно где то в базе тречить прогресс потому что откатывать закомиченное если у вас на полпути процесс оборвется никто не будет. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2021, 17:09 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=40039556&tid=1994228]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 286ms |
| total: | 423ms |

| 0 / 0 |
