Estou criando um banco de dados no qual haverá cerca de 30 tabelas, com todas as tabelas contendo dezenas de milhões de linhas e cada tabela contendo uma única coluna importante e uma coluna de chave primária / estrangeira, a fim de maximizar a eficiência da consulta diante de problemas pesados. atualizações e inserções e faça uso intenso de índices em cluster. Duas das tabelas conterão dados textuais de tamanho variável, com um deles contendo centenas de milhões de linhas, mas o restante conterá apenas dados numéricos.
Como realmente quero extrair toda a última gota de desempenho do hardware que tenho disponível (cerca de 64 GB de RAM, um SSD muito rápido e 16 núcleos), estava pensando em permitir que cada tabela tivesse seu próprio arquivo para que não importasse se Estou entrando em 2, 3, 4, 5 ou mais tabelas, cada tabela sempre será lida usando um thread separado e a estrutura de cada arquivo estará alinhada com o conteúdo da tabela, o que, com sorte, minimizaria a fragmentação e a tornaria mais rápida para o SQL Server adicionar ao conteúdo de qualquer tabela.
Uma ressalva, estou preso no SQL Server 2008 R2 Web Edition . O que significa que não posso usar o particionamento horizontal automático, o que exclui isso como um aprimoramento de desempenho.
O uso de um arquivo por tabela realmente maximizará o desempenho ou estou ignorando as características internas do mecanismo do SQL Server que tornariam isso redundante?
Segundo, se o uso de um arquivo por tabela é vantajoso, por que create table
me dá a opção de alocar a tabela para um grupo de arquivos e não para um arquivo lógico específico? Isso exigiria que eu criasse um grupo de arquivos separado para cada arquivo no meu cenário, o que sugere que talvez o SQL Server não esteja visualizando as vantagens que estou assumindo que viriam ao fazer o que estou propondo.