В моем последнем проекте мы работали над требованием, когда огромные данные (40 миллионов строк) должны быть прочитаны, и для каждой строки нам нужно запустить процесс. В качестве части дизайна мы использовали многопоточность, когда каждый поток извлекал данные для данного раздела, используя Jdb c Cursor с настраиваемым размером выборки. Однако когда мы запустили работу в приложении в среде Prod, мы заметили, что она медленная, так как она требует больше времени для запроса данных из базы данных.
Поскольку у нас были очень сжатые сроки завершения работы , мы придумали работу, где данные экспортируются из SQL Developer в формат файла csv и разбиваются на небольшие файлы. Эти файлы предоставляются на работу. Это значительно улучшило производительность работы и помогло завершить работу вовремя.
Как упоминалось выше, мы использовали шаг вручную для экспорта данных в файл. Если это необходимо для автоматизации этого шага, например, выполнить шаг экспорта из приложения Java, какой из приведенных ниже вариантов (предлагаемых в Интернете) будет быстрее.
- sqlplus (* 1028) * выполнение нативного вызова sqlplus)
- sqlcl параллельного спула
- pl / sql процедура с utl_file и dbms_parallel_execute
Ниже ссылка дает некоторые подробности выше, но не имеет статистики.
https://asktom.oracle.com/pls/apex/f?p=100: 11: 0 :::: P11_QUESTION_ID: 9536328100346697722
Обратите внимание, что в настоящее время у меня нет доступа к этому Oracle среды, поэтому не смог проверить с моей стороны. Кроме того, я разработчик приложений и не имею большого опыта в области БД. Так что ищите совет от кого-то, кто работал над подобным вариантом использования ранее или имеет соответствующий опыт.
Заранее спасибо.