Compartilhar via


Particionamento

O particionamento de um banco de dados melhora o desempenho e simplifica a manutenção. Ao dividir uma tabela grande em tabelas individuais menores, as consultas que acessam somente uma fração dos dados serão executadas maior rapidez, já que haverá menos dados a escanear. As tarefas de manutenção, como reconstruir índices ou fazer backup de uma tabela, podem ser executadas mais rapidamente.

O particionamento pode ser atingido sem dividir tabelas, colocando-se as tabelas fisicamente em unidades individuais de disco. Colocar uma tabela em uma unidade física e as tabelas relacionadas em uma unidade separada pode vir a melhorar o desempenho das consultas, pois, quando as consultas que envolvem junções entre as tabelas forem executadas, diversos cabeçotes de discos lerão os dados ao mesmo tempo. Grupos de arquivos do SQL Server podem ser usados para especificar em quais discos colocar as tabelas.

Particionamento de hardware

O particionamento de hardware projeta o banco de dados para tirar proveito da arquitetura de hardware disponível. Seguem exemplos de particionamento de hardware:

  • Multiprocessadores que habilitam vários threads de operações, permitindo que muitas consultas sejam executadas ao mesmo tempo. Como alternativa, uma única consulta pode ser executada mais depressa em diversos processadores permitindo que os componentes da consulta sejam executados ao mesmo tempo. Por exemplo, cada tabela referenciada na consulta pode ser digitalizada ao mesmo tempo por um thread diferente.

  • Dispositivos RAID (rede redundante de discos independentes) que habilitam os dados a serem distribuídos por diversas unidades de discos, permitindo acesso mais rápido aos dados, porque mais cabeçotes de leitura e gravação lêem os dados ao mesmo tempo. Uma tabela distribuída por diversas unidades normalmente pode ser digitalizada mais depressa do que a mesma tabela armazenada em uma única unidade. Como alternativa, o armazenamento de tabelas em unidades separadas de tabelas relacionadas pode melhorar o desempenho de consultas que unem essas tabelas significativamente. Para obter mais informações, consulte RAID.

Particionamento horizontal

O particionamento horizontal divide uma tabela em várias tabelas. Cada tabela contém o mesmo número de colunas, mas menos linhas. Por exemplo, uma tabela que contém 1 bilhão de linhas pode ser particionada horizontalmente em 12 tabelas, com cada tabela menor representando um mês de dados de um ano específico. Qualquer consulta, ao requerer dados de um mês específico, fará referência somente à tabela apropriada.

Determinar como particionar as tabelas horizontalmente depende de como os dados são analisados. Você deve particionar as tabelas de forma que as consultas façam referência ao menor número possível de tabelas. Caso contrário, consultas UNION em excesso, usadas para mesclar as tabelas logicamente no momento da consulta, podem afetar o desempenho. Para obter mais informações sobre consultas em tabelas particionadas horizontalmente, consulte Cenários para usar exibições.

Particionamento de dados horizontalmente com base em idade e uso é comum. Por exemplo, uma tabela pode conter dados dos últimos cinco anos, mas somente os dados do ano atual são acessados regularmente. Nesse caso, você pode considerar o particionamento dos dados em cinco tabelas, com cada tabela contendo dados somente de um ano.

Para obter mais informações, consulte Tabelas e índices particionados.

Particionamento vertical

O particionamento vertical divide uma tabela em várias tabelas que contêm menos colunas. Os dois tipos de particionamento vertical são a normalização e divisão de linhas:

  • Normalização é o processo padrão do banco de dados para remover colunas redundantes de uma tabela e colocá-las em tabelas secundárias, vinculadas à tabela primária pela relação da chave primária e chave estrangeira.

  • O particionamento de linhas divide a tabela original verticalmente em tabelas com menos colunas. Cada linha lógica em uma tabela dividida coincide com a mesma linha lógica das outras tabelas conforme é identificado por uma coluna UNIQUE KEY idêntica, em todas as tabelas particionadas. Por exemplo, a junção da linha com ID 712 de cada tabela dividida recria a linha original.

Como o particionamento horizontal, a divisão vertical deixa as consultas digitalizarem menos dados. Isso aumenta o desempenho de consulta. Por exemplo, uma tabela que contém sete colunas das quais somente as quatro primeiras são geralmente referenciadas, pode se beneficiar da divisão das três últimas colunas em uma tabela separada.

O particionamento vertical deve ser considerado com cautela, porque a análise de dados de várias partições requer consultas que unem as tabelas. O particionamento vertical também pode comprometer o desempenho, se as partições forem muito grandes.