Чтение данных в Oracle для чтения данных параллельно в .Net

1

Я обрабатываю данные из Oracle Data Reader в С#, который имеет в среднем около 10000 строк данных. Есть ли способ сделать обработку параллельно, так что каждый процессор может заставить его поворачиваться при чтении следующей строки из одного и того же считывателя данных и записи его в ту же таблицу? При последовательном выполнении этот процесс занимает около 10-15 минут, и вот мой последовательный код.

OracleCommand cmd = new OracleCommand(select_query, connection);
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read()){
    for(int i = 1; i <= reader.FieldCount; i++){
        worksheet[counter, i] = reader.GetValue(i).ToString();
    }
    counter++;
}

Конечный результат состоит в том, чтобы все строки были записаны в электронную таблицу. Может кто-то, пожалуйста, помогите мне, поскольку я новичок в параллельном программировании? Заранее спасибо.

  • 1
    Вы не собираетесь получать более быстрый ввод-вывод, разбивая его на отдельные процессоры. Вы знаете, что вы можете подключиться к базе данных в Excel и импортировать данные?
  • 0
    @ Blam, Перед записью в Excel происходит намного больше обработки данных. Плюс это только небольшая часть большого проекта!
Показать ещё 1 комментарий
Теги:
parallel-processing

1 ответ

0

Ваша проблема не в считывании данных. Я обычно трачу десятки или сотни тысяч записей из Oracle через считыватель данных за считанные секунды (и делаю для нескольких коммерческих инструментов).

Либо связь с базой данных ограничивает вашу скорость передачи, либо ваш API таблиц доминирует над всей операцией.

Моя рекомендация состоит в том, чтобы отделить контур считывателя от сборки электронной таблицы.

  1. Прочитайте все 10 000 строк в списке/массиве значений
  2. Итерировать массив значений, построить таблицу

Это предложение позволяет отслеживать время отдельно. Я честно считаю, что используемая вами таблица электронных таблиц может быть узким местом, поскольку я обычно не имею такой производительности при экспорте Oracle в Excel. Возможно, попробуйте другую библиотеку электронных таблиц.

  • 0
    Я использую Microsoft.Office.Interop.Excel API для создания электронной таблицы. Можете ли вы сообщить мне, если есть лучший API (коммерческий или бесплатный), который работает лучше? Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню