Especificações do computador para um banco de dados grande

1

Que tipo de especificações de computador (CPU, RAM, velocidade do disco) devo usar para executar consultas em um banco de dados com mais de 200 milhões de registros? As consultas são para um projeto de pesquisa, portanto, há apenas um "usuário" e apenas uma consulta será executada por vez.

Eu tentei em meu próprio laptop com o SQL Server com um processador i3, 2GB de RAM, disco de 5400 RPM e uma consulta simples não foi concluída após 8 ou mais horas. Eu tenho uma opção para conectar um SSD via eSata e atualizar para 4GB de RAM, mas não tenho certeza se isso será suficiente ...

Obrigado!

Editar:  O banco de dados tem cerca de 25 GB e os índices não estão configurados corretamente. Quando tentei adicionar um índice, deixei rodar por cerca de 8 horas e ainda não tinha terminado, então desisti. Eu deveria ter mais paciência :)?
Em geral, as consultas serão executadas de vez em quando e estão ok, mesmo que leve algumas horas para ser concluído ...

Além disso, as consultas produzirão provavelmente cerca de 10 milhões de registros que eu preciso processar usando Stata / Matlab e estou preocupado que meu laptop atual não seja strong o suficiente, mas não tenha certeza do gargalo ...

    
por SpeksETC 25.11.2010 / 16:56

2 respostas

1

A especificação de hardware para um banco de dados enorme é algo que é incrivelmente difícil de acertar. Nós temos vários bancos de dados grandes (9M + registros em algumas tabelas) e um grande banco de dados (300M + registros na maioria das tabelas), e mesmo para nós tem sido um pouco um hit e miss affair.

Mas tão importante quanto as especificações de hardware é o seu esquema de banco de dados, e como Ira mencionou, os índices são os melhores neste cenário.

Demora muito mais do que 8 horas para criar o índice, e a tabela deve ser completamente desbloqueada, pois a criação de um índice bloqueia a tabela inteira. Um índice que leva muito tempo para criar geralmente é um sinal de uma tabela bloqueada, portanto, certifique-se de que nada mais esteja usando o banco de dados ao tentar fazê-lo.

O que tornará as coisas mais difíceis para você neste cenário é a velocidade do seu disco. Um único disco rígido de 5400 RPM (já vi laptops com velocidades de fuso ainda mais lentas, 5400 é muito bom para um laptop) levará muito mais tempo para carregar os dados em cache para indexação do que uma unidade de 15.000 RPM. Como comparação, nosso servidor SQL tem 14 discos de 15.000 RPM (para um total de 210.000 RPM, ou uma velocidade de fuso 38x mais rápida, e eu suponho uma velocidade de acesso 50x mais rápida na vida real) e eu esperaria criar um índice em Registros de 200M ainda levariam mais de uma hora.

Então, pegue o SSD se puder. Isso ajudará dramaticamente. O ganho de desempenho de um SSD sobre uma unidade de 5400 RPM é quase grande demais para medir.

Se você puder, consiga 4Gb de RAM. Não só ajudará a velocidade do seu servidor SQL (não tanto quanto o SSD, mas ainda ajudará), mas a partir da minha (breve) experiência com o Matlab, ele também ajudará.

    
por 25.11.2010 / 20:28
1

Você não se queixou de quanto tempo levou para preencher o DB com 200 milhões de registros, então concluí que o seu lapttop é rápido o suficiente.

Bancos de dados funcionam porque armazenam os registros de dados com determinados campos "chave" indexados para fornecer acesso rápido. (Caso contrário, todas as consultas teriam que ler todos os registros de cada vez, e 25 GB levaria muito tempo para ler).

Se a sua consulta produzir um número modesto de resultados (digamos, registros de 10K), eu acho que seu problema é que seus registros não são indexados pelo elemento principal da consulta.

    
por 25.11.2010 / 16:59