Share via


SQL Passo-a-Passo – Passo 4 (Filegroups e Tabelas Particionadas)

Nos posts anteriores, discutimos uma maneira de otimizar o acesso aos dados no SQL Server: o uso de índices.

Agora vamos falar de outros conceitos: os Filegroups e as Tabelas Particionadas.

O que são Filegroups?

Filegroups, como o próprio nome já dá a entender, são conjuntos de arquivos que armazenam dados. Todo banco de dados possui um Filegroup Primário e um arquivo de Log (falaremos mais sobre logs nos próximos posts). Apesar de não ser obrigatório, normalmente são utilizadas as extensões .mdf para Filegroups e .ldf para arquivos de Log.

Pois bem; um banco de dados pode possuir também Filegroups adicionais, e neste caso, normalmente a extensão .ndf é utilizada. Estes Filegroups adicionais podem armazenar dados de Tabelas Particionadas do banco de dados.

Tabela Particionada? O que é isso?!

A maneira mais simples de entender este conceito é através de um exemplo.
Imagine que você tenha que armazenar em uma tabela todas as notas fiscais emitidas por uma cadeia nacional de “fast food” em suas centenas de lojas pelo Brasil. A tabela deve ficar grande, não?
Agora imagine o trabalho que as operações do dia-a-dia realizam nesta tabela. Não só Inserções, Consultas e Alterações, mas também operações de Backup, Ordenação, Desfragmentação…

Agora pense na seguinte solução: Armazenar as notas fiscais referentes a cada mês em uma partição desta tabela. Algo como ter um caderninho para controle de cada mês. Não fica bem mais fácil? Na maior parte do tempo, você só manipulará os dados do mês atual. Você pode até manter a partição do mês atual como “read-write” e as outras como “read-only”.
Talvez você não precise de backups diários das partições relativas a meses anteriores, o que reduzirá drasticamente a janela de backup!

SQL Server - Tabela Particionada - Filegroups
Ilustração de Tabela Particionada 

Aumentando o Desempenho com múltiplos discos

Agora uma afirmação que pode causar espanto. Pode ser intuitivo pensar que é vantajoso, do ponto de vista de desempenho, colocar cada partição em um disco físico separado, não é mesmo?.
A princípio, temos a impressão que estaremos utilizando todos os discos ao mesmo tempo, o que melhora o desempenho.
Pois não é bem assim... Apesar dos ganhos de desempenho serem claros nas operações que acabamos de discutir em tabelas particionadas, o SQL Server executa operações de ordenação em uma partição de cada vez. Em outras palavras: somente um disco seria utilizado por vez, o que reduziria o desempenho...

A maneira mais eficiente de utilizar múltiplos discos é configurando volumes distribuídos em vários discos, em estruturas RAID. Desta forma, mesmo quando uma operação de ordenação é realizada numa única partição, todos os discos da estrutura RAID são utilizados em paralelo. Interessante, não? :)

Próximos Passos…

E o post ficou grande de novo… vou deixar para o próximo a parte da sintaxe para criar Filegroups e Tabelas Particionadas, e depois falamos de Logs, ok?

Ah! Vale lembrar que o uso de tabelas (e índices) particionados só é possível nas edições Enterprise, Developer e edições de Avaliação do SQL Server.

Comments

  • Anonymous
    January 01, 2003
    Oi Júlio! É super gratificante ver que tem profissionais lendo o blog e colocando as informações em prática!!! :) Obrigado por compartilhar! Grande abraço!

  • Anonymous
    January 01, 2003
    Bem observado, Otávio! Embora as operações de ordenação sejam realizadas em uma partição por vez, se tivermos múltiplas conexões realizando operações de consulta e alteração em partições distintas, estas operações vão acontecer em paralelo, distribuindo a carga em diversos discos. Vale lembrar que neste caso, a distribuição da carga será determinada pela natureza dos acessos, ou seja, se os dados de uma partição forem mais requisitados do que os de outra (como no exemplo das notas fiscais), existirá mais carga em um disco do que em outro. O uso de estruturas RAID endereça esta questão, pois independentemente da partição que está sendo acessada, a carga pode ser distribuída em todos os discos disponíveis. Mais uma vez, conhecer a natureza e o comportamento do sistema é crucial para garantir a performance. Em breve falaremos de recursos como o Performance Data Collector, que nos ajuda nesta tarefa. Abraço!

  • Anonymous
    April 04, 2009
    Luciano Parabens pela iniciativa, muito bem explicado e fora a dica sobre Aumentando o Desempenho com múltiplos discos, ja apliquei em meu ambiente e realmente esta bem melhor,  conceito esta correto e da certo. Abraço

  • Anonymous
    April 09, 2009
    The comment has been removed