Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по дефрагментации columnstore index? / 10 сообщений из 10, страница 1 из 1
20.03.2019, 16:44
    #39789161
senn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по дефрагментации columnstore index?
Есть следующая проблема:
Вью sys.dm_db_column_store_row_group_physical_stats показывает 32% фрагментации одного колоночного индекса. Вычисляю это так:
по группам:
Код: sql
1.
fragmentation = 100*(ISNULL(deleted_rows,0))/total_rows


суммируя все группы:
Код: sql
1.
fragmentation = CAST(100*(SUM(ISNULL(deleted_rows, 0))) AS DECIMAL(36,4))/SUM(total_rows)


Я пытаюсь дефрагментировать его, как советует msdn,т.е.:
сначала:
Код: sql
1.
ALTER INDEX BESTAND_CCI ON DWH.DWH_F.BESTAND REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON); 


потом его же, но без COMPRESS_ALL_ROW_GROUPS = ON
Код: sql
1.
ALTER INDEX BESTAND_CCI ON DWH.DWH_F.BESTAND REORGANIZE;


с другими индексами это работало, а с этим нет. Фрагментация остается на том же уровне, в лучшем случае уменьшается на 2-3%, а с каждой неделей растет. Началось все с 20%, сейчас уже 35%.

Вопрос к общественности, что не так делаю: вычисляю фракментацию не так, дефрагментирую не так, или вообще все?

Спасибо!
...
Рейтинг: 0 / 0
20.03.2019, 17:59
    #39789195
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по дефрагментации columnstore index?
...
Рейтинг: 0 / 0
20.03.2019, 18:21
    #39789204
senn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по дефрагментации columnstore index?
komrad,

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

Да, забыл добавить:

Microsoft SQL Server 2017 (RTM-GDR) (KB4293803) - 14.0.2002.14 (X64)
Jul 21 2018 07:47:45
Copyright (C) 2017 Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor)
...
Рейтинг: 0 / 0
20.03.2019, 18:28
    #39789207
senn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по дефрагментации columnstore index?
на скриншоте видно, что около половины групп (всего их 37) довольно сильно фрагментированы (сумарная фрагментация ~35
%).
...
Рейтинг: 0 / 0
20.03.2019, 18:40
    #39789211
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по дефрагментации columnstore index?
senn,
у вас на картинке у всех групп trim_reason = DICTIONARY_SIZE

" Dictionary size grew too big to compress all of the rows together."

попробуйте в качестве пробы сделать ALTER INDEX REBUILD
...
Рейтинг: 0 / 0
21.03.2019, 12:41
    #39789520
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по дефрагментации columnstore index?
senn,

в идеале в columnstore не должны производиться какие-либо изменения. Наименьшей проблемой является добавление записей, но, из обзоров следует, что дельта-записи могут снижать производительности и желательно перед использованием таблицы производить реорганизацию для перемещения дельты в основной массив данных. Т.е. для типового сценария использовать такие таблицы нежелательно. Более подходящий вариант - редкое и периодическое обновление, раз в неделю или месяц.
Во избежание полного перестроения индекса придуман дельта-механизм, но злоупотреблять этим не следует.
...
Рейтинг: 0 / 0
21.03.2019, 13:28
    #39789549
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по дефрагментации columnstore index?
Владислав Колосовsenn,

в идеале в columnstore не должны производиться какие-либо изменения. Наименьшей проблемой является добавление записей, но, из обзоров следует, что дельта-записи могут снижать производительности и желательно перед использованием таблицы производить реорганизацию для перемещения дельты в основной массив данных. Т.е. для типового сценария использовать такие таблицы нежелательно. Более подходящий вариант - редкое и периодическое обновление, раз в неделю или месяц.
Во избежание полного перестроения индекса придуман дельта-механизм, но злоупотреблять этим не следует.

в дельтастор записи попадают если их кол-во (insert batch size) меньше 102400 (минимальный размер row group)
из доп. прелестей полное логирование и отсутствие компрессии (данные не сжаты)
при удалении записей в дельтасторе, они реально удаляются, а не помечаются как удаленные в случае compressed row groups
так что, если заливать данные, то порциями кратными 102400 или вообще по 1048576 записей

https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-data-loading-guidance If the batch size is >= 102400, the rows are directly into the compressed rowgroups. It is recommended that you choose a batch size >=102400 for efficient bulk import because you can avoid moving data rows to a delta rowgroups before the rows are eventually moved to compressed rowgroups by a background thread, Tuple mover (TM).
If the batch size < 102,400 or if the remaining rows are < 102,400, the rows are loaded into delta rowgroups.


дельта-механизм придуман для аккумулирования новых данных перед сжатием
нет смысла жать 10-100 записей
...
Рейтинг: 0 / 0
21.03.2019, 16:37
    #39789729
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по дефрагментации columnstore index?
komrad,

полагаю, что основное применение колоночного индекса все же не сжатие, а быстрый расчет агрегированных значений. Для сжатия существуют и отдельные механизмы.
...
Рейтинг: 0 / 0
21.03.2019, 16:48
    #39789734
senn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по дефрагментации columnstore index?
komrad, Владислав Колосов

спасибо большое!
Есть на чем думать. Внутренний механизм columnstore, представляю очень приблизительно, поэтому оценить то, что показывает вью, кроме расчета фрагментации из мсдн, мне трудно.
...
Рейтинг: 0 / 0
21.03.2019, 17:02
    #39789743
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по дефрагментации columnstore index?
Владислав Колосовkomrad,

полагаю, что основное применение колоночного индекса все же не сжатие, а быстрый расчет агрегированных значений. Для сжатия существуют и отдельные механизмы.

сжатие есть один из механизмов достижения быстроты, так же как и "Batch mode execution"

https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-overview?view=sql-server-2017#benefits
https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-overview?view=sql-server-2017#when-should-i-use-a-columnstore-index
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по дефрагментации columnstore index? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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