Я пытаюсь вставить 10 000 строк в четыре таблицы Informix (2500 на таблицу) с помощью поставщика .NET через одно соединение и внутри транзакции (BEGIN WORK/COMMIT WORK). Каждая таблица содержит около 20 столбцов, первичный ключ char (20) и индекс в одном столбце char.Почему провайдер Informix .NET замедляется?
Первые несколько строк вставляются со скоростью около 500 в секунду. Вставки замедляются до тех пор, пока в конце не будет 10/секунд.
Я попытался взломать задачу в транзакции по 1000 строк за раз, с новым соединением для каждой транзакции, но замедление было одинаковым. Соединение и команда были выбраны после завершения каждого блока. Я даже попытался поставить Сон (10000 мс) после каждой транзакции.
Наконец, я изменил программу, чтобы вставить 1000 строк за раз, начиная с определенного номера строки. При первом запуске программы она вставляла строки 1-1000. Во второй раз, когда он запускался, он вставил строки 1 001-2000 и т. Д. Каждый последующий запуск программы начинался через 3 или 4 секунды после окончания предыдущего запуска.
Замедление исчезло. Строки 9000-10 000 были вставлены примерно с той же скоростью в 500 рядов в секунду, что и строки 1-1000.
Что я делаю неправильно? Как я могу получить одну транзакцию из 10 000 строк для вставки с более или менее постоянной скоростью?