powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по дефрагментации columnstore index?
10 сообщений из 10, страница 1 из 1
Вопрос по дефрагментации columnstore index?
    #39789161
senn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть следующая проблема:
Вью 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
Вопрос по дефрагментации columnstore index?
    #39789195
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вопрос по дефрагментации columnstore index?
    #39789204
senn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Вопрос по дефрагментации columnstore index?
    #39789207
senn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на скриншоте видно, что около половины групп (всего их 37) довольно сильно фрагментированы (сумарная фрагментация ~35
%).
...
Рейтинг: 0 / 0
Вопрос по дефрагментации columnstore index?
    #39789211
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
senn,
у вас на картинке у всех групп trim_reason = DICTIONARY_SIZE

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

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

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

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

спасибо большое!
Есть на чем думать. Внутренний механизм columnstore, представляю очень приблизительно, поэтому оценить то, что показывает вью, кроме расчета фрагментации из мсдн, мне трудно.
...
Рейтинг: 0 / 0
Вопрос по дефрагментации columnstore index?
    #39789743
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов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
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по дефрагментации columnstore index?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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