Это время кажется совершенно разумным и согласуется со временем, которое я наблюдал. Если вы хотите, чтобы это работало быстрее, вам нужно использовать параметры массовой вставки и отключить функции безопасности:
- Используйте PreparedStatements и пакеты от 5000 до 10 000 записей, если только это НЕ ДОЛЖНА быть одна транзакция.
- Использовать параметры массовой загрузки в СУБД
- Временно отключить проверку целостности для вставки
- Временно отключите индексы или удалите индексы и заново создайте их после вставки.
- Отключите ведение журнала транзакций и снова включите его позже.
EDIT: транзакции базы данных ограничены дисковым вводом-выводом, а на ноутбуках и большинстве жестких дисков важным числом является время поиска для диска.
Ноутбуки, как правило, имеют довольно медленные диски со скоростью 5400 об/мин. При такой скорости время поиска составляет около 5 мс. Если мы предположим, что для каждой записи выполняется один поиск (в большинстве случаев это завышенная оценка), для вставки всех строк потребуется 40 минут (500000 * 5 мс). Теперь использование механизмов кэширования и механизмов последовательности несколько уменьшает это, но вы можете видеть, откуда берется проблема.
Я (конечно) сильно упрощаю проблему, но вы можете видеть, к чему я клоню; неразумно ожидать, что базы данных будут работать с той же скоростью, что и последовательный массовый ввод-вывод. Вы должны применить какую-то индексацию к своей записи, а это требует времени.
person
BobMcGee
schedule
19.02.2010