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