Массовый расчет: обновление и вставка 1 000 000 записей

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
SDG
Сообщения: 20
Зарегистрирован: 27 авг 2008, 09:32

Массовый расчет: обновление и вставка 1 000 000 записей

Сообщение SDG » 25 июл 2011, 23:14

Интересно, что посоветуют знающие люди.

Делаю расчет абонплаты 10 000 абонентам в хранимой процедуре.
расчет простой - дни в месяце умножаю на тариф.
результат вношу в таблицу, на которой стоит триггер на обновление записи абонента.
Все отлично работает, достаточно быстро.

Но вот задумался что если расчет делать на 1 000 000 записей ?
Хранимая процедура - это транзакция на большое изменение данных, что противоречит Что НЕ надо делать в Firebird

Для того чтоб разделить на более мелкие транзакции, нужно вытягивать все на клинет, а это большая выборка - что противоречит Что НЕ надо делать в Firebird

Вот и задумался, как ПРАВИЛЬНО делать расчет но большое число записей?

Хотя тестовая база на 500 000 и расчетом через хранимую процедуру у меня выполняется без проблем.
Кстати, примерное время расчета 10 минут, что практически совпадает со временем выборки этого же объема на клиент, но без расчета,
так что расчет клиентом теряет всякий смысл.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Re: Массовый расчет: обновление и вставка 1 000 000 записей

Сообщение dimitr » 26 июл 2011, 12:39

не парься и делай в одной транзакции

Ответить