Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADO + IB Provider + массовая вставка записей [D7]


fb switcher ©   (2008-04-30 10:14:00) 

Конфигурация:
fb2.1 на XP + D7 + IBProvider (липецкая разработка) + TAdoCommand
Решается задача:
Вставка большого количества записей (порядка 5000) (это обновление справочника бик)
Используется явное управление транзакциями (пробуется разное количество инсертов на транзакцию)

Проблема: страшные тормоза.

Как можно ускорить процесс, кроме как с вариантом через ISQL.EXE + скрипт?

PS Пробовал отключать параметры отвечающие за чтение метаданных параметров с сервера и указывать их типы явно. Никаких видимых улучшений не наблюдалось.


fb switcher   (2008-04-30 15:57:00) [1]

isql варит такую вставку секунд 25. Хотя может речь про крей....
так у меня не крей, у меня офисный пк.


fb switcher   (2008-04-30 15:56:00) [2]

аха .....


Anatoly Podgoretsky   (2008-04-30 15:44:00) [3]

> fb switcher  (30.04.2008 10:14:00)  [0]

5000 ничтожное количество, менее секунды на обработку.


fb switcher   (2008-04-30 12:06:00) [4]

Не делаю, потому что смысла нет.
Вставка ускорится, а готовый результат (рабочий справочник в рабочем состоянии) будет появляться еще позже, чем с неотключенным PK.


palva   (2008-04-30 12:03:00) [5]

fb switcher   (30.04.08 11:51) [9]
Ага, значит не делаешь. Вот я и ответил на вопрос
> Как можно ускорить процесс, кроме как с вариантом через ISQL.EXE + скрипт?


fb switcher   (2008-04-30 11:51:00) [6]

Индекс всего один и он PK.
Отключить его чтобы потом искать дубликаты по фулскану перед включением?

Внешний файл могу создать на клиенте. Серверу он будет недоступен.
А том с сервером недоступен клиенту.


palva   (2008-04-30 11:46:00) [7]

> где у меня узкое место?

Ну например

1. Полезно отключать индексы при массовых загрузках, а потом заново их строить.

2. В FB можно подготовить обычный файл с данными и затем объявить его в базе как таблицу. Потом его можно переписать во внутренний файл одним оператором INSERT.

Ты так и делаешь?


fb switcher   (2008-04-30 11:42:00) [8]

Инфы по проблеме предоставлено выше крыши.
Для рекомендаций повышения производительности мой код не нужен.

Или хочется посмотреть на то, как я цикл for рисую?
Присваиваю типы и значения параметров TAdoCommand?
Считаю количество инсертов перед тем как сделать очередной коммит?


sniknik   (2008-04-30 11:34:00) [9]

издеваешься?
при показанных 0 строчек кода, узкое место гдето между 0-ой и ... 0-ой строчками (в строчке номер 17).


fb switcher   (2008-04-30 11:23:00) [10]

ок, согласен.
где у меня узкое место?


sniknik   (2008-04-30 11:19:00) [11]

> Куда еще-то грамотнее?
да уж куда нибудь... т.к., судя по приведенному коду, грамотность написанного тобой стремиться к нулю.


fb switcher   (2008-04-30 11:02:00) [12]

переписать все, что ты сделал, на этот раз грамотно.

Куда еще-то грамотнее?
В транзакции пробовалось от 100 до 1000 инсертов.
Вместо Адодатасета используется адокомманд.
Типы параметров задаются явно.


Виталий Панасенко   (2008-04-30 10:47:00) [13]


> Вставка большого количества записей (порядка 5000)

астрономически большое, действительно. откуда столько ?


sniknik   (2008-04-30 10:39:00) [14]

> Как можно ускорить процесс
переписать все, что ты сделал, на этот раз грамотно.

--------- на правах рекламы ---------
- Мама, какой вкусный суп! Что ты с ним сделала?
- Я его сварила! Сынок.


Наверх

Титульная страница Поиск, карта сайта Написать письмо