Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Alter table и транзакционный лог  [new]
SergoM
Guest
Уважаемые!
Может кто-то сталкивался и знает как решить задачу.
SQL Server 2005. БД 120 GB. Модель БД Simple.
выполняю скриgт alter table ... ; в нем меняю тип поля, добавляю поля, добавляю индексы.
таблица имеет около 500000 записей. свободного места около 100 GB
При выполнении скрипта транзакционный лог растет (у него установлено 10 % роста не ограничено) и занимает все свободное место. и модификация таблицы прекращается.
вопрос почему так много надо места для модификации таблицы и есть метода как в этом случае поступать.
т.е есть ли вариант не выгружать данные в файл , оттранкетить таблицу, изменить структуру таблицу, залить обратно данные.
31 май 16, 16:06    [19241823]     Ответить | Цитировать Сообщить модератору
 Re: Alter table и транзакционный лог  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
-создать новые поля NULL с нужными типами
-перелить данные из старых колонок в новые ПАЧКАМИ
-удалить старые столбцы
-переименовать их
31 май 16, 16:25    [19241959]     Ответить | Цитировать Сообщить модератору
 Re: Alter table и транзакционный лог  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
SergoM
т.е есть ли вариант не выгружать данные в файл , оттранкетить таблицу, изменить структуру таблицу, залить обратно данные.
Не выполнять скрипт как единую транзакцию.
В скрипте после каждой операции ("в нем меняю тип поля, добавляю поля, добавляю индексы.") выполнять checkpoint.
31 май 16, 16:28    [19241973]     Ответить | Цитировать Сообщить модератору
 Re: Alter table и транзакционный лог  [new]
SergoM
Guest
Knyazev Alexey,
вы уверены, что при таком алгоритме лог расти не будет?
31 май 16, 16:28    [19241974]     Ответить | Цитировать Сообщить модератору
 Re: Alter table и транзакционный лог  [new]
SergoM
Guest
invm,

я и не выполняю транзакцию. только если сам server. но съесть столько места . непонятно для чего он это делает.
31 май 16, 16:30    [19241987]     Ответить | Цитировать Сообщить модератору
 Re: Alter table и транзакционный лог  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
SergoM
вопрос почему так много надо места для модификации таблицы


потому что транзакция большая получается
31 май 16, 16:30    [19241995]     Ответить | Цитировать Сообщить модератору
 Re: Alter table и транзакционный лог  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
SergoM
invm,

я и не выполняю транзакцию. только если сам server.


Сервер выполняется автоматическую транзакцию
31 май 16, 16:31    [19242000]     Ответить | Цитировать Сообщить модератору
 Re: Alter table и транзакционный лог  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
SergoM
Knyazev Alexey,
вы уверены, что при таком алгоритме лог расти не будет?


будет, но вы этот рост будите контролировать за счёт "перелить данные из старых колонок в новые ПАЧКАМИ"
тем самым разобьёте одну большую транзакцию на N-мелких
31 май 16, 16:48    [19242125]     Ответить | Цитировать Сообщить модератору
 Re: Alter table и транзакционный лог  [new]
Владислав Колосов
Member

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

наверняка эти действия Вы производите в одной транзакции, да еще и автоматически созданным скриптом. Автоскрипт имеет тенденцию перестраховываться и перезаливать таблицу в копию иногда без необходимости. Внимательно просмотрите скрипт и измените перезаливку, если можно это выполнить более простыми средствами.
31 май 16, 18:30    [19242667]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить