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

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

Вставка большого количества записей [MSSQL2000]


Term ©   (2005-05-31 13:00:00) 

Произвожу вставку сотни тысяч записей, из сотни файлов в среднем размером 50 000 записей, делаю одну транзакцию на 1 файл, примерно через 30 файлов, производительность офигенно падает, как победить


Nikolay M.   (2005-05-31 15:54:00) [1]


> Term ©   (31.05.05 15:41) [11]
> проблема в том что с программой должен в последствии работать
> оператор который может мало что знать о БД

К чему сказан этот факт и что из этого следует? Оператор будет вручную копировать данные из каждого файла? Или все-таки пользоваться каким-то интерфейсом?


Term   (2005-05-31 15:41:00) [2]

проблема в том что с программой должен в последствии работать оператор который может мало что знать о БД


Nikolay M.   (2005-05-31 15:32:00) [3]


> Reindeer Moss Eater ©   (31.05.05 14:38) [8]
> То, что у него после 30 файлов торможение начинается говорит
> о том, что bulk insert скорее всего неприменимо.

Так я предлагаю не для каждого файла делать булк, а для всех сразу. А то, что тормоза начинаются через 30 файлов может быть следствием, например, того, что сервер решает обновить статистику. При пакетной заливке всех файлов такого не произойдет.


Term   (2005-05-31 15:24:00) [4]

ну так в чём выход?


Reindeer Moss Eater   (2005-05-31 14:38:00) [5]

То, что у него после 30 файлов торможение начинается говорит о том, что bulk insert скорее всего неприменимо.


Nikolay M.   (2005-05-31 14:32:00) [6]


> почитал про bulk insert, это получается нужно предварительно
> создать файл текстовый, а потом из него лить???

Да. Либо напрямую в нужную таблицу, либо в промежуточную, а потом уже из нее - в целевую, в зависимости от местных метеоусловий. Не забыть обратить внимание на флаги FIRE_TRIGGERS, KEEPIDENTITY, KEEPNULLS, MAXERRORS, TABLOCK и почитать про совместимость булковой заливик с моделями восстановления данных.


sniknik   (2005-05-31 14:28:00) [7]

а что он у тебя не текстовый? весьма странно. обычно "льют" именно из текстового, когда не указывают откуда надо... по дефолту так сказать.
;о)) шутка естественно.

на всякий случай почитай еще - OpenRowset/OpenDataSource/Data Link Server/DTS.


Term   (2005-05-31 13:55:00) [8]

почитал про bulk insert, это получается нужно предварительно создать файл текстовый, а потом из него лить???


Term   (2005-05-31 13:47:00) [9]


> Во-первых, использовать bulk insert.

это щас погляжу


> Во-вторых, использовать во-первых в временную таблицу, из
> которой уже делать INSERT INTO ... SELECT.

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


Nikolay M.   (2005-05-31 13:35:00) [10]


> Stanislav ©   (31.05.05 13:31) [2]

Как насчет открыть БОЛ и скопировать два слова в строку поиска? Информации будет более чем достаточно.


Stanislav   (2005-05-31 13:31:00) [11]

Nikolay M. ©   (31.05.05 13:26) [1]
Что такое bulk insert ?


Nikolay M.   (2005-05-31 13:26:00) [12]

Во-первых, использовать bulk insert.
Во-вторых, использовать во-первых в временную таблицу, из которой уже делать INSERT INTO ... SELECT.


Наверх

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