Conceitos de tabela e índice particionados
O particionamento facilita o gerenciamento de grandes tabelas ou índices, permitindo o acesso e o gerenciamento de subconjuntos de dados de forma rápida e eficaz, ao mesmo tempo em que mantém a integridade geral da coleção de dados. Com o particionamento, uma operação, como o carregamento de dados de um sistema OLTP para OLAP, leva apenas segundos em vez dos minutos ou horas necessários nas versões anteriores do SQL Server. As operações de manutenção realizadas nos subconjuntos de dados também são executadas com mais eficiência porque visam apenas aos dados necessários, em vez de toda a tabela.
Observação |
---|
Tabelas e índices particionados estão disponíveis apenas nas edições Enterprise, Developer e Evaluation do SQL Server. |
Os dados de tabelas e índices particionados são divididos em unidades que podem ser difundidas por mais de um grupo de arquivos em um banco de dados. Os dados são particionados horizontalmente, de forma que os grupos de linhas são mapeados em partições individuais. A tabela (ou índice) é tratada como uma única entidade lógica quando são executadas consultas ou atualizações nos dados. Todas as partições de um único índice ou de uma única tabela devem residir no mesmo banco de dados.
As tabelas e os índices particionados suportam todas as propriedades e recursos associados ao design e à geração de consultas de tabelas e índices padrão, inclusive restrições, padrões, valores de identidade e carimbo de data/hora e gatilhos. Portanto, para implementar uma exibição particionada que seja local em um servidor, implemente uma tabela particionada em seu lugar.
A decisão entre implementar ou não o particionamento depende basicamente do tamanho atual ou futuro da tabela, de como ela será usada e como será seu desempenho com relação às consultas dos usuários e às operações de manutenção.
Em geral, o particionamento de uma tabela extensa é apropriado quando se aplicam estas condições:
A tabela contém, ou se espera que contenha, muitos dados usados de diferentes maneiras.
O desempenho das consultas ou atualizações feitas na tabela não é o esperado ou o custo de manutenção excede os períodos de manutenção predefinidos.
Por exemplo, se um mês de dados for usado basicamente para operações INSERT, UPDATE, DELETE e MERGE enquanto os meses anteriores foram usados principalmente para consultas SELECT, o gerenciamento dessa tabela seria mais fácil se ela fosse particionada por mês. Esse benefício seria especialmente significativo se as operações de manutenção regulares da tabela visarem somente a um subconjunto de dados. Se a tabela não for particionada, essas operações podem consumir muitos recursos em um conjunto de dados inteiro. Com o particionamento, as operações de manutenção, como recriação de índice e desfragmentação, podem ser executadas em um único mês de dados de gravação enquanto os dados somente leitura permanecem disponíveis para acesso online.
Para ampliar esse exemplo, suponha que você deseje mover um mês de dados somente leitura dessa tabela para uma tabela de data warehouse para análise. Com o particionamento, os subconjuntos de dados podem ser separados rapidamente em áreas de preparação para manutenção offline e, em seguida, adicionados como partições às tabelas existentes, considerando que todas essas tabelas estejam na mesma instância do banco de dados. Em geral, operações como essa levam segundos, e não minutos ou horas, como nas versões anteriores.
O particionamento de uma tabela ou índice poderá aprimorar o desempenho das consultas se as partições forem projetadas corretamente, com base no tipo de consultas executadas com frequência em sua configuração de hardware. Para obter mais informações, consulte Criando partições para aprimorar o desempenho de consultas.
O particionamento costuma ser usado junto com a Replicação do SQL Server. O uso de partições pode habilitá-lo a otimizar o desempenho da replicação transacional e da replicação de mesclagem, reduzindo efetivamente o volume de dados e metadados a serem gerenciados pelo sistema de replicação. A replicação dá suporte a no máximo 1024 partições por tabela. Para obter mais informações, consulte Replicando tabelas e índices particionados.
Para apresentar um exemplo de como aplicar uma solução de particionamento a um banco de dados real, está disponível um cenário de particionamento que você pode implementar no exemplo de banco de dados AdventureWorks2008R2. Esse cenário é explicado em Particionamento no banco de dados de exemplo do AdventureWorks2008R2.
Arquitetura de particionamento
No SQL Server, todas as tabelas e todos os índices de um banco de dados são considerados particionados, mesmo se forem compostos apenas por uma partição. Basicamente, as partições formam a unidade básica de organização na arquitetura física de tabelas e índices. Ou seja, a arquitetura lógica e física de tabelas e índices é composta por vários espelhos de partição de tabelas e índices com uma partição. Para obter mais informações, consulte Organização de tabela e índice.