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

Возникла необходимость произвести ребилд индексов в базе, MS SQL 2008 r2.
Во время ребилда индексов стал резко расти лог транзакций, вследствие чего место на диске
с логом закончилось и ребилд завершился с ошибкой.

Вопрос такой, как во время ребилда выполнять шринк лога?
Модель восстановления используется полная, на простую перейти нельзя.
Лог шринкается успешно только после бэкапа лога транзакций.

время работы ребилда индексов заранее неизвестна.
3 окт 14, 11:31    [16654916]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
Glory
Member

Откуда:
Сообщений: 104751
ребилд и шринк
Вопрос такой, как во время ребилда выполнять шринк лога?

Не надо шринк. Надо бэкап лога.
3 окт 14, 11:32    [16654923]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
ребилд и шринк
Guest
Glory
ребилд и шринк
Вопрос такой, как во время ребилда выполнять шринк лога?

Не надо шринк. Надо бэкап лога.

поставлю вопрос по-другому: как делать в таком случае бэкап лога? каждые 10 минут?
ребилд идёт часами..он может занять целый день.
Параллельно будут работать два задания? на фоне ребилда индексов будут отрабатывать бэкапы
лога транзакций?
3 окт 14, 11:43    [16655014]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
Glory
Member

Откуда:
Сообщений: 104751
ребилд и шринк
поставлю вопрос по-другому: как делать в таком случае бэкап лога? каждые 10 минут?

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

ребилд и шринк
ребилд идёт часами.

Одного индекса часами ??
3 окт 14, 11:45    [16655031]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
ребилд и шринк
Guest
Я хочу сказать что может в таком случае возникнуть такая картина:

1. начинается ребилд индексов.
2. рост лога транзакций превысил пороговое значение
3. начинаем делать бэкап лога транзакий на фоне работаюшего ребилда индексов
4. бэкап лога завершился, ребилд продолжает идти
5. опять превышено пороговое значение для лога транзакций, так как ребилд всё ещё идёт
6. снова запускаем бэкап лога транзакций


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

получится у нас вдвойне нагрузка возрастёт, так как помимо ребилда ещё будут постоянные бэкапы лога..
3 окт 14, 11:50    [16655076]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
Glory
Member

Откуда:
Сообщений: 104751
ребилд и шринк
и так будет повторяться....

Перестраивать индексы по одному ?
3 окт 14, 11:51    [16655085]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
Glory
Member

Откуда:
Сообщений: 104751
ребилд и шринк
получится у нас вдвойне нагрузка возрастёт, так как помимо ребилда ещё будут постоянные бэкапы лога..

Вы кроме бэкапа лога знаете еще способы очистки завершенных транзакций из лога ?
3 окт 14, 11:52    [16655091]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8826
А зачем вы перестраиваете индексы все подряд? Перестройка мало что даёт за исключением перестройки кластеризованных (да и то не всегда). Лучше займитесь статистиками, а не индексами. Или у вас жесткий лимит оперативной памяти и идут постоянные подгрузки с диска?
3 окт 14, 12:06    [16655184]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
ребилд и шринк
Guest
Glory
ребилд и шринк
получится у нас вдвойне нагрузка возрастёт, так как помимо ребилда ещё будут постоянные бэкапы лога..

Вы кроме бэкапа лога знаете еще способы очистки завершенных транзакций из лога ?


расскажите, может чего не знаю...
3 окт 14, 12:10    [16655216]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
Glory
Member

Откуда:
Сообщений: 104751
ребилд и шринк
расскажите, может чего не знаю...

Это был вообще то к вам вопрос
Вы же как то хотите убирать из лога завершенные транзакции без бэкапа.
3 окт 14, 12:11    [16655226]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
ребилд и шринк
Glory
пропущено...

Вы кроме бэкапа лога знаете еще способы очистки завершенных транзакций из лога ?


расскажите, может чего не знаю...


bulk logged recovery model + log backup (как уже заметили выше) после перестройки full recovery model
3 окт 14, 12:15    [16655255]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
ребилд и шринк
Guest
Glory
ребилд и шринк
расскажите, может чего не знаю...

Это был вообще то к вам вопрос
Вы же как то хотите убирать из лога завершенные транзакции без бэкапа.

Я не специалист по MSSQL, я лишь знаю, что шринк в полной модели восстановления
отрабатывает успешно после того, как завершён бэкап лога транзакций
как по-другому ужать лог, я не знаю...

я создал maintenance plan.
выбрал там rebuild indexes.
FREE SPACE OPTIONS:
Reorganize pages with the default amount of free space
3 окт 14, 12:17    [16655276]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
+ нюансы вроде не возможности сделать point in time recovery, когда lsn на который выполняется восстановление находится внутри диапазона lsn охватываемого бэкапом лога (читать про ML pages).
3 окт 14, 12:18    [16655284]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
ребилд и шринк
Guest
мне нужно сделать ребилд всех индексов в базе.
у меня тысячи таблиц, индексов ещё больше...
3 окт 14, 12:19    [16655294]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8826
Шринк не нужно делать после промежуточного бэкапа журнала. Вы вообще не тем занимаетесь, как я писал выше.
3 окт 14, 12:20    [16655307]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
Glory
Member

Откуда:
Сообщений: 104751
ребилд и шринк
Я не специалист по MSSQL, я лишь знаю, что шринк в полной модели восстановления
отрабатывает успешно после того, как завершён бэкап лога транзакций

Еще раз
Шринк ничего не делает с _занятым_ местом.
Занятое завершенными транзакциями место можно очистить только с помощью бэкапа лога
3 окт 14, 12:20    [16655310]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
ребилд и шринк
Guest
churupaha
ребилд и шринк
пропущено...


расскажите, может чего не знаю...


bulk logged recovery model + log backup (как уже заметили выше) после перестройки full recovery model

при модели восстановления bulk logged будет ли работать зеркалирование в базе?
3 окт 14, 12:21    [16655318]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
ребилд и шринк
мне нужно сделать ребилд всех индексов в базе.
у меня тысячи таблиц, индексов ещё больше...


сильное заявление. а как оценили что все?
3 окт 14, 12:22    [16655323]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
ребилд и шринк
Guest
Glory
ребилд и шринк
Я не специалист по MSSQL, я лишь знаю, что шринк в полной модели восстановления
отрабатывает успешно после того, как завершён бэкап лога транзакций

Еще раз
Шринк ничего не делает с _занятым_ местом.
Занятое завершенными транзакциями место можно очистить только с помощью бэкапа лога


как же мне посоветуете тогда быть? план такой?
1. перевести базу в bulk logged recovery model (убедиться что зеркалирование при этом не сломается)
2. запустить ребилд всех индексов существующих в базе, или даже только фрагментированных, а таких большинство.
3. во время работы ребилда индексов запустить бэкап лога?
3 окт 14, 12:24    [16655354]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
ребилд и шринк
churupaha
пропущено...


bulk logged recovery model + log backup (как уже заметили выше) после перестройки full recovery model

при модели восстановления bulk logged будет ли работать зеркалирование в базе?


http://technet.microsoft.com/en-us/library/ms190203(v=sql.105).aspx

автор
Some features such as database mirroring require that the database remain in the full recovery model.

When transactional replication is enabled, SELECT INTO and BULK INSERT operations are fully logged even under the Bulk Logged recovery model.
3 окт 14, 12:27    [16655369]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
Glory
Member

Откуда:
Сообщений: 104751
ребилд и шринк
как же мне посоветуете тогда быть?

Перестраивать только нужные индексы.
Перестраивать индексы по одному.
После перестройки очередного индекса делать бэкап лога.
3 окт 14, 12:27    [16655371]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
ребилд и шринк
Guest
churupaha
ребилд и шринк
мне нужно сделать ребилд всех индексов в базе.
у меня тысячи таблиц, индексов ещё больше...


сильное заявление. а как оценили что все?

вот так определил
SELECT b.name [index_name],  OBJECT_NAME(b.object_id) [table_name]
FROM sys.dm_db_index_physical_stats
(DB_ID('mydb'), NULL, NULL, NULL, 'DETAILED') AS a
    JOIN sys.indexes AS b
    ON a.object_id = b.object_id
    AND a.index_id = b.index_id
    and a.avg_fragmentation_in_percent>20
    and a.page_count>100
    and a.index_id<>0 --HEAP EXCLUDE
    ;
3 окт 14, 12:27    [16655373]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
ребилд и шринк
Glory
пропущено...

Еще раз
Шринк ничего не делает с _занятым_ местом.
Занятое завершенными транзакциями место можно очистить только с помощью бэкапа лога


как же мне посоветуете тогда быть? план такой?
1. перевести базу в bulk logged recovery model (убедиться что зеркалирование при этом не сломается)
2. запустить ребилд всех индексов существующих в базе, [b]или даже только фрагментированных, а таких большинство[/b].
3. во время работы ребилда индексов запустить бэкап лога?


вы бы поглядели в течении времени как используются те индексы. Seek/Range Scan/Scan. Потому что на Seek не шибко влияет фрагментация разве, только что в data cache могут например попадать не шибко заполненные страницы...
3 окт 14, 12:30    [16655400]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
ребилд и шринк
Guest
churupaha
автор
When transactional replication is enabled, SELECT INTO and BULK INSERT operations are fully logged even under the Bulk Logged recovery model.

правильно ли я понял из цитаты выше, что зеркалирование при этом работать будет?
3 окт 14, 12:30    [16655403]     Ответить | Цитировать Сообщить модератору
 Re: Как произвести ребилд индексов при полной модели восстановления без роста лога транзакций?  [new]
ребилд и шринк
Guest
Glory
ребилд и шринк
как же мне посоветуете тогда быть?

Перестраивать только нужные индексы.
Перестраивать индексы по одному.
После перестройки очередного индекса делать бэкап лога.

какая-то странная штука для меня просходит:

0. база в full recovery model
1. сделал полный бэкап базы
2. сделал бэкап лога транзакций
3. запустил шринк. он не отработал. нисколько не ужал.
4. запустил ещё раз бэкап лога транзакций.
5. запустил опять шринк....опять шринк не отработал



почему после бэкапа лога транзакций не отрабатывает шринк?
3 окт 14, 12:49    [16655577]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить