Как улучшить производительность JDBC с моим приложением - PullRequest
0 голосов
/ 02 марта 2012

Вот базовая схема моего приложения (которое подключается к SQlLite DB):

  1. Он сканирует каталог и создает список из 8-15 различных плоских файлов, которые необходимо прочитать.

  2. Идентифицирует плоский файл и выбирает общий подготовленный оператор на основе расширения файла.

  3. Затем строка за строкой читает плоский файл и добавляет подготовленный оператор со строками, заданными для пакета. Пакет выполняется каждые 1000 утверждений. Некоторые из рассматриваемых файлов содержат 200 000 строк, которые необходимо прочитать.

  4. После того, как все файлы были вставлены в базу данных (для каждого типа файлов существуют разные таблицы), программа обновляет определенный столбец для каждой таблицы до общего значения.

  5. Программа создает новый файл для каждого типа файла и извлекает информацию из базы данных в новый файл.

В настоящее время один запуск в каталоге с 9 очень маленькими файлами (менее 50 строк) и одним очень большим файлом (более 200 000 строк) занимает около 1,5 минут. Я надеюсь получить это быстрее.

Несколько первых вопросов:

  1. Должен ли я закрыть и открыть соединение с базой данных для каждой части программы (загрузка, обновление, распаковка) или оставить соединение открытым и передать его каждому из методов.

  2. Должен ли я закрывать подготовленный оператор после каждого обрабатываемого файла? Или просто очистить параметры после каждого файла и закрыть его в конце метода (по существу, после загрузки всех заданий)?

Меня интересуют любые другие комментарии о том, на чем я должен сосредоточиться, чтобы максимально повысить производительность этого приложения.

Спасибо.

...