Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как вставить быстро?  [new]
Samir
Member

Откуда: Азербайджан, г. Баку
Сообщений: 1382
Sql 2008

Имеется таблица с 10 полями. Каждый день делается простой инсерт (insert into t1 select * from t2)
Вставляется по 10 миллионов записей.

При этом, с таблицы t1 делаются выборки (данные не корректируются и не добавляются, только select)

Каким способом можно максимально ускорить процесс вставки данных?
17 апр 12, 16:37    [12428673]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить быстро?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Samir,

а вы записи добавляете или перезаписываете? Как вариант - лить все данные в третью таблицу, а потом делать SWITCH, но это зависит от общего количества записей.
А вас скорость не устраивает? И вы уже выяснили, что тормозит? Вставка в индексы, блокировки?
17 апр 12, 16:46    [12428735]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить быстро?  [new]
blest
Member

Откуда:
Сообщений: 554
10 млн за раз вставляется? Если так, то можно bulk-ой вставлять
17 апр 12, 17:10    [12428924]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить быстро?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
Samir
Sql 2008

Имеется таблица с 10 полями. Каждый день делается простой инсерт (insert into t1 select * from t2)
Вставляется по 10 миллионов записей.

При этом, с таблицы t1 делаются выборки (данные не корректируются и не добавляются, только select)

Каким способом можно максимально ускорить процесс вставки данных?
На таблице есть индексы?
Таблица пустая или с лданными?
Если есть кластерный индекс и таблица непустая, то идёт вставка диапазона или в существующие страницы?
17 апр 12, 17:27    [12429038]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить быстро?  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3752
Все уже украдено придумано до нас
http://msmvps.com/blogs/gladchenko/archive/2010/03/09/1761298.aspx
17 апр 12, 17:34    [12429086]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить быстро?  [new]
Samir
Member

Откуда: Азербайджан, г. Баку
Сообщений: 1382
300 млн записей в месяц, каждый день идет добавление
блокировать таблицу нельзя

спасибо ответившим, анализирую
17 апр 12, 17:39    [12429120]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить быстро?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
Samir
300 млн записей в месяц, каждый день идет добавление
блокировать таблицу нельзя
Таким запросом:
insert into t1 select * from t2
вы по любому её блокируете.

Раз надолго нельзя, то балк небольшими порциями.

Если было бы можно, то есть ещё интересные способы из статьи по ссылке выше.
17 апр 12, 19:52    [12429700]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить