Recuperando espaço livre no grupo de arquivos com partição cronológica única

4

-movido aqui de SO (não comentários lá)

Pergunta:

qual é a maneira correta de recuperar espaço em um grupo de arquivos grande (centenas de GBs) com partição única de tabela que é ordenada cronologicamente e não tem fragmentação de índice e não pode arcar com nenhuma fragmentação de índice? Eu ouço muito sobre o encolhimento (por exemplo, link ). A fragmentação do índice e a complexidade temporal da reconstrução é a minha principal preocupação

Histórico:

Eu tenho uma tabela enorme (poucos TBs) com as seguintes propriedades:

  • os dados são armazenados apenas em ordem cronológica (coluna 'C')
  • O índice
  • é baseado na dimensão 'A' e, em seguida, na coluna 'C'
  • tabela é particionada com base em 'A', cada partição tem seu próprio grupo de arquivos (com 10% FileGrowth)

Portanto, os dados são anexados apenas a cada partição e o armazenamento é muito rápido.

Queremos iniciar a partição também com base no tempo (por exemplo, partição por trimestre e dimensão 'A'; novamente, cada partição em grupo de arquivos separado). Mas há duas preocupações:

  • Não podemos perder o espaço em disco (por exemplo, ter 10% de espaço livre espaço em cada partição histórica que nunca será tocada novamente).
  • Não podemos arcar com qualquer fragmentação de índice (como acontece com isso quantidade de dados que nossas consultas sofreriam extremamente).

Seria bom poder cortar o espaço livre do final do grupo de arquivos após cada final de trimestre e depois, por exemplo, marcar o grupo de arquivos como somente leitura

    
por Jan 19.04.2015 / 11:25

1 resposta

1

Para recuperar espaço livre no final da partição:

DBCC SHRINKFILE (FileGroupFileName, TRUNCATEONLY)
GO

Para marcar a partição como somente leitura:

ALTER DATABASE [DBNAME]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;

ALTER DATABASE [DBNAME] MODIFY FILEGROUP [FileGroupName] READ_ONLY;
GO

ALTER DATABASE [DBNAME]
SET MULTI_USER;
GO
    
por 07.11.2018 / 08:44