![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Медленное обновление БД
kreyl © (2006-04-26 00:01:00)Delphi2006 + ADO +Access. Программа производит вычисления; их результат являет собой несколько массивов по 15000 чисел в каждом. Эти массивы нужно запихнуть в таблицу БД.
Таблица простая - два столбца, Identity и результат.
Сначала очищаю таблицу запросом, потом открываю dataset к ней с параметром LockType := ltBatchOptimistic; потом отключаюсь от базы и заполняю датасет. Потом подключаюсь к базе и говорю UpdateBatch.
Этот самый апдейт работает очень медленно - минут десять. Размер результирующего mdb файла при этом - меньше 10 МБ. Подскажите, пожалуйста, как быстро внести в БД данные из массива? Может, я структурно что-то делаю неправильно?
Заранее спасибо.
Slym (2006-04-28 05:34:00) [1]Я бы делал связку:
Монопольный доступ+2х поточно, с буфером TMemoryStream+ INSERT INTO +prepared
Slym (2006-04-28 05:18:00) [2]1. Монопольно открой базу.
2. ltBatchOptimistic - накой тебе это? памяти много?
3. Можно INSERT INTO +prepared
4. Если очень быстро надо временная аля "MemotyTable", или массив, или TMemoryStream, или тупо file of record, а уж в конце можно и в базу лить (смахивает на ltBatchOptimistic).
5. можно 2х поточно... 1 считает и пишет в буфер, 2 пишет в базу
Johnmen (2006-04-26 14:17:00) [3]
> MsGuns © (26.04.06 14:10) [5]
Быстрее. Ибо не надо "обслуживать" набор данных.
MsGuns (2006-04-26 14:10:00) [4]>Johnmen © (26.04.06 13:39) [3]
>Быстрее.
В общем случае - нет. При правильных установках коннекта и самого датасета практически одни в один, да это и понятно - ведь дельфишный TADODataSet юзает те же самые запросы. "Тормоза" получаются лишь как следствия укправления транзакцией самим датасетом, что тоже "лечится" ;)
Delphi basic (2006-04-26 13:41:00) [5]Попробуй, то же самое, но приконнектиться к БД через ODBC (хотя бы ради интереса :)
Johnmen (2006-04-26 13:39:00) [6]
> MsGuns © (26.04.06 13:35) [2]
Быстрее.
MsGuns (2006-04-26 13:35:00) [7]>Johnmen © (26.04.06 00:47) [1]
>Просто запросом INSERT INTO ...
Одиночными инсертами будет не быстрее, чем TDataSet.Append
Для "бістрой закачки" эффективен выгруз в Эксель и из него средствами SQL в акцешную БД
Johnmen (2006-04-26 00:47:00) [8]Просто запросом INSERT INTO ...