Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Очень большой Insert / 8 сообщений из 8, страница 1 из 1
26.10.2002, 18:11:25
    #32062151
bantik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень большой Insert
Гуру, помогите !

Делаю перекачку таблицы из одной базы в другую. Нужно произвести небольшие операции над полями, поэтому ALTER TABLE не использую. Все делается через INSERT from SELECT
В исходной таблице около 3 млн. записей. (размер около 3 Gb)
Так вот - такое чувство, что сервер где-то имеет "тормоз".
Я перепробовал разные алгоритмы - и через select, и через fetch (с единичными Insert) - скорость выполнения одинаковая !!!
На компьютере 2xXeon 700, 1Gb RAM время копирования - больше 6 часов (или около 150 зап/сек)
Не подскажете - где копать и куда глядеть ?
...
Рейтинг: 0 / 0
28.10.2002, 09:52:07
    #32062208
vap
vap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень большой Insert
Вы работаете через ADO? Через него медленно получается 50-200 вызовов в сек.
Может код перекачки сделать на Transact SQL и обрабатывать за один раз по несколько тыс. записей?
Можно несного повысить скорость обработки, если открыть транзакцию и в конце кода закрыть.
...
Рейтинг: 0 / 0
28.10.2002, 10:15:25
    #32062217
Sanek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень большой Insert
У меня то же были подобные проблемы, но решил просто ...
т.к. это не требовало постоянного решения, то копировали такие таблицы порциями примерно по 10000 записей ... работало все Значительно быстрей !
...
Рейтинг: 0 / 0
28.10.2002, 10:17:14
    #32062219
Александр Гладченко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень большой Insert
А почему не используете BULK INSERT или BCP?
...
Рейтинг: 0 / 0
28.10.2002, 11:32:04
    #32062260
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень большой Insert
2bantik
INSERT вставляет одну запись или сразу все?
Напишите подробнее, что Вы делаете.
...
Рейтинг: 0 / 0
28.10.2002, 11:43:45
    #32062267
KANDed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень большой Insert
Почитай
...
Рейтинг: 0 / 0
28.10.2002, 16:16:28
    #32062405
bantik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень большой Insert
Интуитивно натолкнулся на такую вещь - поскольку и таблица источник, и таблица приемник большие и содержат больше 10-ти индексов - наверное у оптимизатора на этом "съезжает крыша". Внутри тела хранимой процедуры сделал узкую временную таблицу (без индексов) и заполняю ее из источника (с преобразованием данных). Затем из временной одним insert в таблицу-приемник (вот там уже пусть SQL индексы строит).
Скорость вполне приемлемая - 5 млн записей за 45 минут. На размер tempdb пока не обращаю внимание :-)

p.s. Никакого ADO - только одна хранимая процедура.
...
Рейтинг: 0 / 0
28.10.2002, 18:36:36
    #32062455
Очень большой Insert
Снеси индексы на таблице получателе и копируй используя DTS, после копирования создай индексы заново. При чем подправь DTS пакет ручками перед запуском, поставь в Options'ах Transform Data Task - Table Lock и Insert Batch Size 3000-20000.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Очень большой Insert / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]