OLEDB медленный при выполнении с базой данных доступа на сетевом диске - PullRequest
0 голосов
/ 12 января 2011

Я экспортирую данные в виде строк в базе данных доступа, расположенной на сетевом диске.В настоящее время я использую следующий код c #:

using(OleDBCommand oleDBCommand = new oledbcommand(insertstring,conn))
{
    OleDbParameter param = new OleDbParameter();
    param.ParameterName = " .. ";
    oleDbCommand.Parameters.Add(param);
    ....
    ....
    ....                 

    foreach(Row row in rows)
    {
        oleDBCommand.parameters.add["asd"].value= row.o;
        ....
        ....

        oleDCCommand.executenonquery();
    }
}

, что занимает около минуты для экспорта 100000 строк.Но при экспорте в базу данных, расположенную на сетевом диске, это занимает около часа.В чем причина этого сбоя и как его решить?

Я использую Microsoft.ACE.OLEDB.12.0. РЕДАКТИРОВАТЬ: Сетевой диск довольно быстрый, в том смысле, что файл размером 100 МБ перемещается из локального в сеть.занимает порядка минут.

1 Ответ

1 голос
/ 12 января 2011

Учитывая доказательства, ответа нет, кроме задержки в сети.Я бы посоветовал вам попробовать меньшие партии локально и на сетевом диске и посмотреть, как они работают.Например, попробуйте пакеты по 100, 1000, а затем 10000 и сравните числа.Если разность масштабируется линейно, т. Е. Если сетевой диск всегда в шестьдесят раз медленнее, то это задержка.Если он работает вдвое медленнее, пока вы не наберете определенное число (или, возможно, даже определенную запись), то это что-то еще, например, исчерпан буфер или что-то еще.

Надеюсь, это поможет.

...