Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с ALTER INDEX REBUILD ONLINE = ON / 25 сообщений из 27, страница 1 из 2
25.10.2019, 11:56
    #39881446
VicSO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с ALTER INDEX REBUILD ONLINE = ON
Столкнулся с такой проблемой, везде пишется что 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
25.10.2019, 12:05
    #39881456
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с ALTER INDEX REBUILD ONLINE = ON
VicSO,

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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

Вот я тоже думал что требуется ток дополнительное пространство, но не в 5 раз больше чем сам индекс.
...
Рейтинг: 0 / 0
25.10.2019, 13:07
    #39881518
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с ALTER INDEX REBUILD ONLINE = ON
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
25.10.2019, 13:56
    #39881576
VicSO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с ALTER INDEX REBUILD ONLINE = ON
Yasha123,

Ну значит либо баг какой-то либо настройки. А по по больше размер можете индекс создать на 10гб и попробовать тоже самое?
...
Рейтинг: 0 / 0
26.10.2019, 07:52
    #39881832
VicSO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с ALTER INDEX REBUILD ONLINE = ON
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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с ALTER INDEX REBUILD ONLINE = ON / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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