J'exécute une 350GB
base de données sur mon PC avec environ 40 millions de lignes.
SQL Server 2014, Win7, AMD 8350 @ 4,8 GHz, 16 Go de RAM et un SSD de 500 Go (la base de données est hébergée sur son propre SSD de 500 Go, avec un débit de 500 Mo / 500 Mo en lecture / écriture).
La base de données n'est pas mise à jour, je suis juste en train de l'analyser / la lire. Avec la création de quelques-uns indexes
, tout join
, count(*)
etc., prend moins d'une minute, ce qui est bien pour moi. J'ai exécuté quelques requêtes (après avoir exécuté une seule requête de jointure, 40 à 50 fois, cela devient lent) sur les données, et maintenant les appels qui ont duré 1 minute sont toujours en cours d'exécution 20 minutes plus tard.
Je garde un œil attentif sur les ressources système et je peux voir le SSD
coup de pied au démarrage de la requête, elle lit pendant 20-30 secondes, puis lit 121kB/second
pendant les 20 minutes suivantes. Ce n'est pas un problème de CPU ou de disque. Je suis limité avec ma quantité de RAM, mais les appels fonctionnent bien lorsque j'ai chargé la base de données pour la première fois, maintenant, rien ne fonctionne, 25 minutes plus tard.
En fait, je ne peux plus interroger la base de données, tout appel prend trop de temps, même une SELECT
instruction de base . J'ai essayé de reconstruire les index et de mettre à jour les statistiques, mais aucune différence.
Je n'ai pas beaucoup d'expérience à ce sujet, il est donc tout à fait possible que ma requête SQL soit incorrecte, auquel cas je m'attendrais à une erreur ou à la fin de l'exécution avec 0 résultats, mais aucun ne se produit.
Ce que j'essaie de faire, c'est de compter toutes les instances d'un «TypeID», dans les 5 secondes avant un temps basé sur la table 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