Экспорт данных в CSV-файл: sqlplus против sqlcl параллельно против pl / sql utl_file dbms_parallel_execute, который быстрее - PullRequest
1 голос
/ 19 апреля 2020

В моем последнем проекте мы работали над требованием, когда огромные данные (40 миллионов строк) должны быть прочитаны, и для каждой строки нам нужно запустить процесс. В качестве части дизайна мы использовали многопоточность, когда каждый поток извлекал данные для данного раздела, используя Jdb c Cursor с настраиваемым размером выборки. Однако когда мы запустили работу в приложении в среде Prod, мы заметили, что она медленная, так как она требует больше времени для запроса данных из базы данных.

Поскольку у нас были очень сжатые сроки завершения работы , мы придумали работу, где данные экспортируются из SQL Developer в формат файла csv и разбиваются на небольшие файлы. Эти файлы предоставляются на работу. Это значительно улучшило производительность работы и помогло завершить работу вовремя.

Как упоминалось выше, мы использовали шаг вручную для экспорта данных в файл. Если это необходимо для автоматизации этого шага, например, выполнить шаг экспорта из приложения Java, какой из приведенных ниже вариантов (предлагаемых в Интернете) будет быстрее.

  1. sqlplus (* 1028) * выполнение нативного вызова sqlplus)
  2. sqlcl параллельного спула
  3. pl / sql процедура с utl_file и dbms_parallel_execute

Ниже ссылка дает некоторые подробности выше, но не имеет статистики.

https://asktom.oracle.com/pls/apex/f?p=100: 11: 0 :::: P11_QUESTION_ID: 9536328100346697722

Обратите внимание, что в настоящее время у меня нет доступа к этому Oracle среды, поэтому не смог проверить с моей стороны. Кроме того, я разработчик приложений и не имею большого опыта в области БД. Так что ищите совет от кого-то, кто работал над подобным вариантом использования ранее или имеет соответствующий опыт.

Заранее спасибо.

...