Скорость вставки в dbf
От: vasya-serega Украина  
Дата: 26.12.07 17:05
Оценка:
Проблема в большом времени записи в таблицу. Есть массив данных, которые нужно вставить в таблицу. Если в цикле выполнять INSERT и ExecuteNonQuery(), получается очень долго. Как ускорить процесс?
Re: Скорость вставки в dbf
От: TK Лес кывт.рф
Дата: 26.12.07 19:37
Оценка:
Здравствуйте, vasya-serega, Вы писали:

VS>Проблема в большом времени записи в таблицу. Есть массив данных, которые нужно вставить в таблицу. Если в цикле выполнять INSERT и ExecuteNonQuery(), получается очень долго. Как ускорить процесс?


Удалите индексы
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Скорость вставки в dbf
От: Nonmanual Worker  
Дата: 27.12.07 05:10
Оценка:
Здравствуйте, vasya-serega, Вы писали:

VS>Проблема в большом времени записи в таблицу. Есть массив данных, которые нужно вставить в таблицу. Если в цикле выполнять INSERT и ExecuteNonQuery(), получается очень долго. Как ускорить процесс?


Когда-то давно сравнивал DBF с другими форматами локальных баз, так на моих тестовых примерах в скорости вставки он проигрывал раза в 3-5 тому же Access-овскому файлу mdb. Правда писал на Delphi, использовал BDE для работы с dbf и ADO для Access. А BDE работает с dbf очень-очень шустро, а ADO в Delphi было не очень... А продукты MS наоборот заточены под ADO. Так что может подумать о смене формата, если это возможно (Ну предварительно попробывать без индексов, и с использованием какой-нибудь сторонней библиотеки для работы с dbf).
Re[2]: Скорость вставки в dbf
От: vasya-serega Украина  
Дата: 27.12.07 07:35
Оценка:
Здравствуйте, Nonmanual Worker, Вы писали:

NW>Когда-то давно сравнивал DBF с другими форматами локальных баз, так на моих тестовых примерах в скорости вставки он проигрывал раза в 3-5 тому же Access-овскому файлу mdb. Правда писал на Delphi, использовал BDE для работы с dbf и ADO для Access. А BDE работает с dbf очень-очень шустро, а ADO в Delphi было не очень... А продукты MS наоборот заточены под ADO. Так что может подумать о смене формата, если это возможно (Ну предварительно попробывать без индексов, и с использованием какой-нибудь сторонней библиотеки для работы с dbf).


Индексы не использую,
бесплатных библиотек для dbf не знаю, если знаете, подскажите,
а к смене формата подойду в крайнем случае, подходит xml, но очень уж много переписывать кода
Re[3]: Скорость вставки в dbf
От: nejest Беларусь  
Дата: 27.12.07 10:16
Оценка:
Здравствуйте, vasya-serega, Вы писали:

VS>Индексы не использую,

VS>бесплатных библиотек для dbf не знаю, если знаете, подскажите,
VS>а к смене формата подойду в крайнем случае, подходит xml, но очень уж много переписывать кода
А нельзя ли не переписывать много кода, а написать один класс, к которому будет идти обращение при необходимости получения/сохранения баз? ИМХО при этом подходе вашей программе будет всёравно с какими данными работать.
... << RSDN@Home 1.2.0 alpha rev. 775>>
Re[3]: Скорость вставки в dbf
От: Nonmanual Worker  
Дата: 27.12.07 11:10
Оценка:
Здравствуйте, vasya-serega, Вы писали:

VS>Индексы не использую,

VS>бесплатных библиотек для dbf не знаю, если знаете, подскажите,
VS>а к смене формата подойду в крайнем случае, подходит xml, но очень уж много переписывать кода

Я к сожалению новичек в .Net, поэтому библиотек порекомендовать не могу.
Вы работаете с таблицами dbf через ODBC?
Re: Скорость вставки в dbf
От: andrex Украина  
Дата: 27.12.07 11:38
Оценка:
Здравствуйте, vasya-serega, Вы писали:

VS>Проблема в большом времени записи в таблицу. Есть массив данных, которые нужно вставить в таблицу. Если в цикле выполнять INSERT и ExecuteNonQuery(), получается очень долго. Как ускорить процесс?


Да. Очень долго получается. Поэтому когда встала такая задача, была изучена спецификация DBF формата и за несколько часов написан код, перегоняющий DataTable прямиком в DBF файл. Там структура очень простая поэтому сложностей быть не должно. Кодом, к сожалению, поделиться не могу.
Я бы изменил мир — но Бог не даёт исходников...
Re: Скорость вставки в dbf
От: brainunit  
Дата: 27.12.07 11:43
Оценка:
Если Вы работаете с ADO.NET, то попробуйте использовать batch update. Для этого используйте DataAdapter и увеличьте свойство DbDataAdapter.UpdateBatchSize, возможно, быстродействие увеличится.
Re[2]: Скорость вставки в dbf
От: Nonmanual Worker  
Дата: 28.12.07 06:59
Оценка:
Здравствуйте, andrex, Вы писали:

A>Здравствуйте, vasya-serega, Вы писали:


A>Да. Очень долго получается. Поэтому когда встала такая задача, была изучена спецификация DBF формата и за несколько часов написан код, перегоняющий DataTable прямиком в DBF файл. Там структура очень простая поэтому сложностей быть не должно. Кодом, к сожалению, поделиться не могу.


Тоже выход. Формат открытый, индекстов у вас нет, версия файла dbf — одна, структура файла (поля) известна, и менять ее не нужно, новые записи дописываются в конец файла dbf, итого задача заключается в дописывании строк к концу текстового файла. Данные полей всех типов хранятся как строки, т.е. нумерик(10) = 100 будет в файле как строка ' 10'. Халява Работы на час, если нет мемо полей (шни хранятся в бругом файле). Зато скорость вставки будет просто космической
Re[3]: Скорость вставки в dbf
От: vasya-serega Украина  
Дата: 28.12.07 10:47
Оценка:
Здравствуйте, Nonmanual Worker, Вы писали:

NW>Тоже выход. Формат открытый, индекстов у вас нет, версия файла dbf — одна, структура файла (поля) известна, и менять ее не нужно, новые записи дописываются в конец файла dbf, итого задача заключается в дописывании строк к концу текстового файла. Данные полей всех типов хранятся как строки, т.е. нумерик(10) = 100 будет в файле как строка ' 10'. Халява Работы на час, если нет мемо полей (шни хранятся в бругом файле). Зато скорость вставки будет просто космической


Пасиб, именно на этом варианте и остановился. Ну насчет часа работы сомневаюсь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.