Estou executando um 350GB
banco de dados no meu PC com ~ 40 milhões de linhas.
SQL Server 2014, Win7, AMD 8350 a 4.8GHZ, 16 GB de RAM e um SSD de 500 GB (o banco de dados está hospedado em seu próprio SSD de 500 GB, com uma taxa de transferência de 500 MB / 500 MB de leitura / gravação).
O banco de dados não está sendo atualizado, estou apenas analisando / lendo. Com a criação de alguns indexes
, alguns join
, count(*)
etc, leva menos de 1 minuto, o que é bom para meus propósitos. Fiz algumas consultas (depois de executar uma única consulta de junção, 40 a 50 vezes, fica lenta) nos dados e agora as chamadas que demoraram 1 minuto ainda estão sendo executadas 20 minutos depois.
Fico atento aos recursos do sistema e consigo ver SSD
quando a consulta é iniciada, ela lê por 20 a 30 segundos e depois 121kB/second
pelos próximos 20 minutos. Este não é um problema de CPU ou disco. Estou limitado com minha quantidade de RAM, no entanto, as chamadas funcionam bem quando carreguei o banco de dados, agora, nada é executado, 25 minutos depois.
Efetivamente, não posso mais consultar o banco de dados, qualquer chamada leva tempo demais, mesmo uma SELECT
declaração básica . Eu tentei reconstruir os índices e atualizar as estatísticas, mas não há diferença.
Como não tenho muita experiência nisso, é perfeitamente possível que minha consulta SQL esteja incorreta; nesse caso, eu esperaria um erro ou a execução com 0 resultados, mas nenhuma delas ocorre.
O que estou tentando fazer é contar todas as instâncias de um 'TypeID', nos 5 segundos anteriores a um horário com base na tabela ACALLS.
SELECT ACALLS.StartTime, ACALLS.Time, ACALLS.ServerIP, ACALLS.SRVR, ACALLS.calls, ACALLS.TOKEN, COUNT(TypeID) as ExecRate
FROM ACALLS
INNER JOIN MAINVIEW ON
MainView.TimeStamp BETWEEN ACALLS.StartTime and DATEADD(ss,-5,ACALLS.StartTime)
WHERE DATEPART(hour,MainView.TimeStamp) BETWEEN 10 and 13 and
CAST(MainView.TimeStamp as date) = '2015-12-09' and
MainView.TypeID = '123456789'
GROUP BY Acalls.STartTime, ACALLs.TIME, ServerIp,SRVR, ACALLS.CALLS, ACALLS.TOKEN
ORDER BY Acalls.StartTime