Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 большая вставка данных  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 334
подскажите пожалуйста, как можно организовать большую вставку данных менее затратно для ресурсов сервера.
15 млн записей, 70 полей на сервере отжирают 90 гигов дискового пространства.
я делаю
insrt into table
select field1, ... field70 from table1 join table2
union all
select field1, ... field70 from table1 join table3
union all
select field1, ... field70 from table1 join table4
union all
select field1, ... field70 from table1 join table5

все дело в том что по окончанию отработки процедуры с выгрузкой таблица table весит примерно около 10-12 гигов. не пойму куда отжираются еще 80 гигов.
можно ли как нить организовать вставку без логирования журнала транзакций или сделать пакетную вставку как в SISS чтобы результат фиксировался и шринкался файл БД.
подскажите пожалуйста направление.
спасибо.
27 ноя 11, 21:40    [11667908]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
Двоичник
все дело в том что по окончанию отработки процедуры с выгрузкой таблица table весит примерно около 10-12 гигов. не пойму куда отжираются еще 80 гигов.

Ну так узнайте куда
sp_spaceused


Двоичник
можно ли как нить организовать вставку без логирования журнала транзакций или сделать пакетную вставку как в SISS чтобы результат фиксировался и шринкался файл БД.

Без логирования - нельзя
Можно с минимальным логированием - BULK INSERT
27 ноя 11, 21:54    [11667953]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 334
я извиняюсь, а булкинсерт работает с селектом и юнионами?
27 ноя 11, 21:58    [11667964]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
Двоичник
я извиняюсь, а булкинсерт работает с селектом и юнионами?

нет
27 ноя 11, 22:05    [11667979]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 334
Glory
Без логирования - нельзя
Можно с минимальным логированием - BULK INSERT

тогда к чему это было?
27 ноя 11, 22:05    [11667981]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
Двоичник
тогда к чему это было?

Это был ответ про логирование
Т.е. какие команды в каком объеме логируются
27 ноя 11, 22:06    [11667983]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 334
вопрос актуален
27 ноя 11, 22:30    [11668018]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
Двоичник
вопрос актуален

команда insert логируется в полном объеме. Всегда
Или меняйте логику работы
Или уменьшайте размер транзакции

Кстати так и непонятно, размер чего вас беспокоит - файла данных или файла лога
27 ноя 11, 22:33    [11668023]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
sti
Member

Откуда:
Сообщений: 769
Двоичник
Glory
Без логирования - нельзя
Можно с минимальным логированием - BULK INSERT

тогда к чему это было?

Можно выгрузить данные в файл и сделать BULK INSERT
28 ноя 11, 09:10    [11668718]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
aleks2
Guest
Элементарно, Ватсон

set implicit_transactions OFF
while @@trancount>0 commit

insrt into table
select field1, ... field70 from table1 join table2

insrt into table
select field1, ... field70 from table1 join table3

insrt into table
select field1, ... field70 from table1 join table4

insrt into table
select field1, ... field70 from table1 join table5

Ну и режим восстановления Full, канешно, нада отключить. Иначе - бэкап журнала между инсертами.
28 ноя 11, 09:29    [11668756]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Двоичник
я извиняюсь, а булкинсерт работает с селектом и юнионами?



You can use INSERT INTO <target_table> SELECT <columns> FROM <source_table> to efficiently transfer a large number of rows from one table, such as a staging table, to another table with minimal logging. Minimal logging can improve the performance of the statement and reduce the possibility of the operation filling the available transaction log space during the transaction.

Minimal logging for this statement has the following requirements:
The recovery model of the database is set to simple or bulk-logged.
The target table is an empty or nonempty heap.
The target table is not used in replication.
The TABLOCK hint is specified for the target table.

Rows that are inserted into a heap as the result of an insert action in a MERGE statement may also be minimally logged.
28 ноя 11, 09:38    [11668785]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 334
это я все выполнил и база у меня в симпл,
и в репликации не учавствует
и целефая таблица у меня пустая
только вот с таблоком я не понял

insert into table
select field1 from table2 (tablock)

так это работает?
только не понял какая табла заблокируется?

если table2 то этот вариант мне не подходит, пользователи должны иметь возможность работать с данными из которых я собираю срез данных
28 ноя 11, 10:07    [11668887]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5126
Двоичник,
The TABLOCK hint is specified for the target table.
28 ноя 11, 10:21    [11668952]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
l_slava
Member

Откуда:
Сообщений: 17
Двоичник,

версия SQL Server какая?
28 ноя 11, 10:38    [11669041]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 334
l_slava
Двоичник,

версия SQL Server какая?


Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
Jun 17 2011 00:54:03
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )
28 ноя 11, 10:41    [11669062]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
l_slava
Member

Откуда:
Сообщений: 17
Двоичник,
переделать всю логику.
Зачем вам insert миллионов строк в пустую таблицу из других существующих таблиц?
Это исторические данные?
Используйте partitions. А для обработки существующих таблиц сделайти snapshot.
28 ноя 11, 11:16    [11669308]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31987
Двоичник
это я все выполнил и база у меня в симпл,
и в репликации не учавствует
и целефая таблица у меня пустая


insert into table with (tablockx)
select field1, ... field70 from table1 join table2
union all
select field1, ... field70 from table1 join table3
union all
select field1, ... field70 from table1 join table4
union all
select field1, ... field70 from table1 join table5
28 ноя 11, 11:26    [11669397]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 334
принимаемая таблица итак партицирована
снапшот таблиц не делаю - нет надобности.

таблица получатель это результат отчетного среза за весь период данных.
грубо говоря денормализация данных в одну таблу для дальнейшего анализа в отчетных системах.
28 ноя 11, 11:28    [11669414]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 334
чем отличается (tablockx) от (tablock) ??
28 ноя 11, 11:31    [11669437]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Двоичник
чем отличается (tablockx) от (tablock) ??



ну вы документацию то откройте и хоть одним глазком туда...
28 ноя 11, 11:35    [11669457]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
l_slava
Member

Откуда:
Сообщений: 17
Двоичник
принимаемая таблица итак партицирована
снапшот таблиц не делаю - нет надобности.

таблица получатель это результат отчетного среза за весь период данных.
грубо говоря денормализация данных в одну таблу для дальнейшего анализа в отчетных системах.


Хм, ну пусть по снапшоту и анализируют.
А вместо инсерта сделайте представление, которое денормализует ваши данные.
А по уму в сторону OLAP смотреть надо
28 ноя 11, 12:19    [11669834]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Двоичник,

Предлагаю - убить индексы - залить данные - построить индексы.
28 ноя 11, 13:38    [11670606]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
l_slava
Member

Откуда:
Сообщений: 17
trew
Двоичник,
Предлагаю - убить индексы - залить данные - построить индексы.


А как это уменьшит размер базы или лога?
28 ноя 11, 15:34    [11671815]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
l_slava
trew
Двоичник,
Предлагаю - убить индексы - залить данные - построить индексы.


А как это уменьшит размер базы или лога?

А как это относится к вопросу?
как можно организовать большую вставку данных менее затратно для ресурсов сервера.
28 ноя 11, 16:19    [11672387]     Ответить | Цитировать Сообщить модератору
 Re: большая вставка данных  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5126
Двоичник
подскажите пожалуйста, как можно организовать большую вставку данных менее затратно для ресурсов сервера.
один
два
три
28 ноя 11, 16:32    [11672523]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить