Estou usando [vColumnstoreDensity]
para monitorar a integridade dos meus índices columnstore.
Percebi que tenho um índice que parece estranho.
Pelo que entendi, o índice columnstore preencherá um rowgroup antes de iniciar o próximo rowgroup. Para melhor desempenho de índice, grupos de linhas mais completos são melhores.
Dito tudo isso, tenho uma tabela que estou tendo problemas para entender. Mesmo após uma reconstrução de índice usando a maior classe de recurso (para fornecer a quantidade máxima de memória possível para o processo de compilação), a [vColumnstoreDensity]
exibição ainda mostra esse índice como sendo distribuído por muitos rowgroups parcialmente cheios.
COMPRESSED_rowgroup_count
4936
COMPRESSED_rowgroup_rows
2693512978
COMPRESSED_rowgroup_rows_MIN
468
COMPRESSED_rowgroup_rows_MAX
739443
COMPRESSED_rowgroup_rows_AVG
545687
Editar:
Este é um índice columnstore clusterizado.
Existe um evento estendido que é acionado quando um grupo columnstore está sendo 'cortado', acho que o evento é
column_store_index_build_process_segment
. Este evento terá um motivo de 'corte' e você deve procurar duas possíveis causas de corte:Obviamente, para capturar esse evento, você precisa configurar uma sessão XE durante a compilação do índice (o artigo vinculado mostra como).
Você também pode examinar os artefatos pós-compilação, especificamente nos dicionários, e ver se os dicionários secundários associados ao segmento pequeno já estão em tamanho real (16Mb). Isso indicaria que a causa provável do corte é um dicionário completo.