Ferramentas para planejar um requisito de tamanho de banco de dados SQL

2

Estou quase pronto para começar a configurar um data warehouse de SQL para alguns serviços de análise do SQL Server. Os dados que vou dividir e cortar residem em um banco de dados off site que eu não controle, então minha ideia é configurar trabalhos regulares que saiam e pegam novas entradas e inseri-las na minha própria versão do banco de dados. tabela.

Eu estou querendo saber se existem boas ferramentas para ajudar a planejar os requisitos de espaço de banco de dados. Depois de apenas 5 meses, a tabela em que estou interessado já obteve quase 4,5 milhões de registros e até o ano que vem eu estimo que poderíamos gerar 3-4 milhões de registros por mês.

Acho que o que estou procurando é algo em que eu posso alimentar a definição da tabela e, em seguida, me diga quanto espaço em disco um bilhão de linhas levaria.

Obrigado.
Editar

Bem, usando o Excel eu criei 1098 bytes teóricos por registro usando o pior cenário que um varchar (1000) foi usado em cada registro para o máximo.

Em 4 milhões de registros por mês, são 48 milhões de registros por ano e, no pior caso, 50 gigabytes de espaço em disco por ano. Soltando isso para um varchar (255) não me dá 16 shows por ano, e varchar (50) me dá ~ 6.5 shows por ano.

Alguém lá fora, um DBA melhor do que eu sou e deixe-me saber se eu estou fora da base ou não?

Editar # 2

Conforme solicitado aqui, é a definição da tabela:

Type             Size
int              4
int              4
int              4
datetime         8
Decimal(19,5)    9
int              4
int              4
varchar(1000)    1000
int              4
int              4
smalldatetime    4
int              4
int              4
int              4
int              4
decimal(9,2)     5
smallint         2
datetime         8
decimal(18,2)    9
bit              1
int              4
int              4

Total geral de 1098 bytes, se todos os campos forem usados para o máximo.

    
por NA Slacker 06.10.2010 / 18:41

1 resposta

1

Não conheço nenhuma ferramenta que faça isso; no entanto, embora seja um pouco trabalhoso, você pode calcular isso com base nos tipos de coluna da linha. Você provavelmente poderia escrever um powershell para ajudá-lo se você gerasse os scripts create table e os alimentasse em um script.

Talvez um script que pesquise todos os int e adicione a um contador, e o mesmo para cada tipo de dados, você possa fazer uma multiplicação rápida para descobrir um aprox. tamanho da tabela. Provavelmente será um pouco complicado pegar os tamanhos de todos os tipos de dados varchar(50) e char(10) , mas, novamente, um pouco da magia powershell provavelmente poderia ajudar.

Atualizar

Eu também chego à mesma conclusão que você, no pior dos casos você está com 1098 bytes por registro. Você conhece seus dados, mas, com base em suas edições, parece que há uma boa chance de que seus dados sejam inferiores a varchar(1000) para muitos registros. Isso lhe dará economia de espaço em cada registro quando este for o caso, portanto, no melhor dos casos, você está em 98 bytes por registro. Se eu fosse você, usaria essas informações para verificar os dados que você já tem e criar uma linha de base para o comprimento médio desse campo varchar(1000) e usar essa média para calcular uma mediana boa.

    
por 06.10.2010 / 18:50