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

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

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


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