powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с ALTER INDEX REBUILD ONLINE = ON
25 сообщений из 27, страница 1 из 2
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881446
VicSO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с такой проблемой, везде пишется что ALTER INDEX REBUILD ONLINE = ON эта та-же операция что и ALTER INDEX REBUILD ONLINE = OFF только позволяет иметь доступность к индексу таблице ну и в дата файле будет на момент работы занимать двойной размер. Но не где не сказано что и журнал транзакций забьет в 5,5 раз больше чем размер индекса.
то есть REORGANIZE в этом случае даже выигрыше, так как на сильно фрагментированном индексе под 70% он журнал транзакций забил где-то на 2,2 от размера самого индекса.

Я это где-то в документации пропустил или это какой-то баг?
Тестировал на
Microsoft SQL Server Enterprise 13.0.5426.0
Microsoft SQL Server Enterprise 13.0.5026.0
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881456
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSO,

а что, на оффлайн операции прирост журнала меньше?
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881458
VicSO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

Да в офлайн режиме равный размеру индекса+- чучуть.
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881460
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSO,

я так подозреваю объект в момент ребилда под нагрузкой
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881461
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSO,

ну, не знаю, для меня допустим объем журналов в половину объёма базы. Фактически же меньше трети.
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881463
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSOНо не где не сказано что и журнал транзакций забьет в 5,5 раз больше чем размер индекса.
...
Я это где-то в документации пропустил или это какой-то баг?

никакой это не баг, это плата за онлайновость.
оффлайновый ребилд минимально логируется в симпл и балк_логгед,
"эффективно" т.е. постранично логируется в полной модели.
а онлайновый ребилд пишет в лог построчно, конечно он лог закакает в любой модели
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881466
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSO,

Никакого бага нет

Из-за онлайновости, ALTER INDEX REBUILD ONLINE = ON выполняется дольше (может сильно дольше), и т.к. это един транзакция, записи в логе (все, а не только этого процесса) с момента ее старта не могут быть удалены.

REORGANIZE же - это не единая транзакция, а следовательно не блокирует очистку лога.


В SQLServer 2017 для ALTER INDEX REBUILD ONLINE = ON появилась опция resumable. По-мимо возобновляемости, она делает REBUILD неединой транзакцией.
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881468
VicSO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,
Нет нагрузки нету.
Yasha123,
Ну тогда онлайн не выгодный в принципе
сильно фрагментированном индексе под 70% REORGANIZE отъел всего 2 раза больше.
раз онлайн отъедает 5 раза больше, тем более REORGANIZE можно отменить в любой момент без потери результата, чего не скажешь о ONLINE
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881471
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSO,

не выгоден, если у вас не 24/7 требования доступности.
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881472
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSOНу тогда онлайн не выгодный в принципе
сильно фрагментированном индексе под 70% REORGANIZE отъел всего 2 раза больше.
раз онлайн отъедает 5 раза больше, тем более REORGANIZE можно отменить в любой момент без потери результата, чего не скажешь о ONLINE


1. REORGANIZE - очень (очень, очень) долгая операция.
2. Возможности REORGANIZE по уменьшению физической (внутренней) фрагментации сильно ограничены.
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881473
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не баг, а фича (как уже сказали для тех кто 24/7)

во время обслуживания индексов запускайте бэкап лога почаще (если у вас Фулл модель)
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881475
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSOTaPaK,
Нет нагрузки нету.
Yasha123,
Ну тогда онлайн не выгодный в принципе
сильно фрагментированном индексе под 70% REORGANIZE отъел всего 2 раза больше.
раз онлайн отъедает 5 раза больше, тем более REORGANIZE можно отменить в любой момент без потери результата, чего не скажешь о ONLINE
да вам msLex уже объяснил,
никакие не 5 раз.
это из-за единой транзакции лог не может быть очищен,
и в ваш лог, пока ребилдилось, еще кто-то поднавалил.
сам же ребилд больше, чем 2 х размер индекса, не навалит
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881476
VicSO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex,

В том то и дело, что отъедает в 5 раз больше, тогда смысл операции этой не понятен.
причем если делать DATA_COMPRESSION = PAGE , DATA_COMPRESSION = NONE то объём отъедаемый адекватен.
при сжатие получилось 0.8 при распаковки 1.3
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881477
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовVicSO,

не выгоден, если у вас не 24/7 требования доступности.
при REORGANIZE данные также остаются доступны.
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881479
VicSO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123,

В этот момент записей нет, база в тесте создана мной, и к ней кроме как данная операция не применяется.
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881481
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSOmsLex,

В том то и дело, что отъедает в 5 раз больше, тогда смысл операции этой не понятен.
причем если делать DATA_COMPRESSION = PAGE , DATA_COMPRESSION = NONE то объём отъедаемый адекватен.
при сжатие получилось 0.8 при распаковки 1.3

Если вы все же поймете, что

Лог в 5 раз больше != rebuild записал в лог в 5 раз

то все остальное встанет на свои места само.
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881482
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSOYasha123,

В этот момент записей нет, база в тесте создана мной, и к ней кроме как данная операция не применяется.

модель восстановления какая?
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881487
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSOВ этот момент записей нет, база в тесте создана мной, и к ней кроме как данная операция не применяется.
сейчас что-нибудь небольшое отребилдю,
где только я на сервере.
статистику вывешу, дайте 10 минут.
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881503
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123VicSOВ этот момент записей нет, база в тесте создана мной, и к ней кроме как данная операция не применяется.
сейчас что-нибудь небольшое отребилдю,
где только я на сервере.
статистику вывешу, дайте 10 минут.
вполне что-то мелкое может дать x5.
Но в жизни все индексы строятся онлайн и при таком варианте места б на лог не хватало бы никогда
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881505
VicSO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex,

FULL а иначе вопрос не стоял, попались 2 индекса больших и в итоге база в тала. индексы были 50гб, и лога на 500гб просто не хватило. каждый час лог транзакции снимется и размер обычно от 300-до 1024 мегабайт.
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881507
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881509
VicSO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

Вот я тоже думал что требуется ток дополнительное пространство, но не в 5 раз больше чем сам индекс.
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881518
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicSOTaPaK,

Вот я тоже думал что требуется ток дополнительное пространство, но не в 5 раз больше чем сам индекс.
да никакие не 5 раз,
просто кроме вас в лог еще кто-то писал.

мое репро:
таблицу фрагментирую на 50%,
вставив сперва 10000 страниц с четным номером,
потом 10000 с нечетным,
1 запись = 1 страница.

фрагментированная таблица 300Мб, после ребилда 156Мб.
онлайновый ребилд записал в лог 214 Мб,
больше, чем объем перестроенного индекса,
но все же меньше, чем объем перестроенного х 2
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
select top 10000 n,
       cast('a' as char(8000)) as filler
into dbo.t
from dbo.nums
where n % 2 = 0;

alter table dbo.t
add constraint PK_t primary key clustered(n);

insert into dbo.t
select top 10000 n,
       cast('a' as char(8000)) as filler
from dbo.nums
where n % 2 > 0;

select *
from sys.dm_db_index_physical_stats(db_id(), object_id('dbo.t'), 1, null, null)


backup database [TestBulk]
to disk = 'C:\backups\sql_2016_dev\testbulk_full.bak'
with init;

alter database [TestBulk] set recovery full

backup log [TestBulk]
to disk = 'C:\backups\sql_2016_dev\testbulk_log.trn'

alter index PK_t on dbo.t rebuild
with (ONLINE = ON )

select sum([Log Record Fixed Length] + [Log Record Length])
from fn_dblog(null, null) -- 225.241.956 - 214Mb

...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881576
VicSO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123,

Ну значит либо баг какой-то либо настройки. А по по больше размер можете индекс создать на 10гб и попробовать тоже самое?
...
Рейтинг: 0 / 0
Проблема с ALTER INDEX REBUILD ONLINE = ON
    #39881832
VicSO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123,

Сделал по другому, сделал свою базу и восстановил туда бэкап
--несколько попыток.
BACKUP LOG [TEST] TO DISK = N'Nul:' WITH NOFORMAT, NOINIT, NAME = N'TEST', SKIP, NOREWIND, NOUNLOAD, STATS = 10
ALTER INDEX [PK_TanksVar] ON [dbo].[TanksVar] REBUILD WITH ( ONLINE = ON )
select sum([Log Record Fixed Length] + [Log Record Length]) from fn_dblog(null, null)
--505973580
BACKUP LOG [TEST] TO DISK = N'Nul:' WITH NOFORMAT, NOINIT, NAME = N'TEST', SKIP, NOREWIND, NOUNLOAD, STATS = 10
ALTER INDEX [PK_TanksVar] ON [dbo].[TanksVar] REBUILD WITH ( ONLINE = ON)
select sum([Log Record Fixed Length] + [Log Record Length]) from fn_dblog(null, null)
--512260764
BACKUP LOG [TEST] TO DISK = N'Nul:' WITH NOFORMAT, NOINIT, NAME = N'TEST', SKIP, NOREWIND, NOUNLOAD, STATS = 10
ALTER INDEX [PK_TanksVar] ON [dbo].[TanksVar] REBUILD WITH ( ONLINE = OFF )
select sum([Log Record Fixed Length] + [Log Record Length]) from fn_dblog(null, null)
--70999674
BACKUP LOG [TEST] TO DISK = N'Nul:' WITH NOFORMAT, NOINIT, NAME = N'TEST', SKIP, NOREWIND, NOUNLOAD, STATS = 10
ALTER INDEX [PK_TanksVar] ON [dbo].[TanksVar] REBUILD WITH ( ONLINE = OFF )
select sum([Log Record Fixed Length] + [Log Record Length]) from fn_dblog(null, null)
--70985806
Как видим разница 512260764/70985806=7,216 раз.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с ALTER INDEX REBUILD ONLINE = ON
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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