Цитата:
Сообщение от
Hyper
Так. И все-таки с точки зрения СУБД SQL 2000, не Аксапты, с точки зрения быстродействия есть какая-то разница делать 700 000 мелких транзакций или одну большую?
ответ сильно зависит от значения свойства Recovery Model и от числа одновременно работающих пользователей.
вы говорите, что других работающих пользователей не будет.
значит влияние на других можно не учитывать.
Если Recovery Model = Full
то с точки зрения СУБД накладных расходов на обслуживание 700 000 мелких транзакций значительно больше, чем на обслуживание одной большой. (в этом режиме все транзакции хранятся в transaction log). в этом случае 700 000 мелких транзакций - как самоубийство тупым столовым ножом.
Если Recovery Model = Simple
то СУБД выкидывает информацию о выполненных транзакциях.
в этом случае мелкие транзакции гарантировано поместятся даже в маленьких Transaction Log. Из-за отсутствия затрат времени на рост Transaction Log (как правило очень существенных, измеряемых в долях секунды) много мелких транзакций может выполнится гораздо быстрее, чем одна большая транзакция. (накладные расходы на обслуживание транзакции измеряются килобайтами и микросекундами)
================
чтобы гарантировано сделать работу быстрой - избавьтесь от накладных расходов на рост Transaction Log. Сразу поставьте ему вменяемый размер и сразу задайте вменяемые параметры роста.
================
есть и другие различия. но они дадут проценты к производительности. в разы - вряд ли.