![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]> Как можно ускорить процесс
переписать все, что ты сделал, на этот раз грамотно.
--------- на правах рекламы ---------
- Мама, какой вкусный суп! Что ты с ним сделала?
- Я его сварила! Сынок.