В SQL Profiler вы можете видеть, что очень простые обновления таблицы по первичному ключу занимают около 10-30 мс каждый. При каждом 10-м обновлении в столбце записи отображается 1 , во всех остальных обновлениях - 0 . Это должно означать, что для каждого 10-го оператора обновления все еще требуется дисковый ввод-вывод. Интересно, почему это так. Не будет ли более эффективной очередь всех операций ввода-вывода, пока транзакция не будет зафиксирована?
А где бы вы хотели хранить такие обновления памяти после обновления таблицы размеров, скажем, 10 000 000 записей?
Где бы вы хотели хранить журнал транзакций.
КАК много, как кажется ОЗУ, мы не можем предполагать, что оно бесконечно ...
Кроме того, ожидание с операциями ввода-вывода до конца транзакции может не быть оптимальным планом даже с бесконечной оперативной памятью, поскольку тогда транзакция должна будет ждать, пока все операции ввода-вывода будут завершены.
В противном случае на самом деле желательно записывать на диск для длительных транзакций (но так, чтобы атомарность не нарушалась).
Это журнал транзакций