Ich verwende 350GBauf meinem PC eine Datenbank mit ~ 40 Millionen Zeilen.
SQL Server 2014, Win7, AMD 8350 bei 4,8 GHz, 16 GB RAM und eine 500-GB-SSD (die Datenbank wird auf einer eigenen 500-GB-SSD mit einem Durchsatz von 500 MB / 500 MB Lese- / Schreibzugriff gehostet).
Die Datenbank wird nicht aktualisiert, ich analysiere / lese sie nur. Mit der Schaffung von wenigen indexes, jeder join, count(*)usw., dauert weniger als 1 Minute, was für meine Zwecke in Ordnung ist. Ich habe einige Abfragen (nachdem eine einzelne Join-Abfrage 40-50 Mal ausgeführt wurde, wird sie langsam) für die Daten ausgeführt, und jetzt werden Anrufe, die 1 Minute gedauert haben, noch 20 Minuten später ausgeführt.
Ich behalte die Systemressourcen im Auge und sehe den SSDKick-In, wenn die Abfrage startet. Sie wird 20 bis 30 Sekunden lang gelesen und dann 121kB/seconddie nächsten 20 Minuten lang. Dies ist kein CPU- oder Festplattenproblem. Ich bin mit meiner RAM-Größe begrenzt, aber die Aufrufe laufen einwandfrei, als ich die Datenbank zum ersten Mal geladen habe. Jetzt läuft 25 Minuten später nichts mehr.
Tatsächlich kann ich die Datenbank nicht mehr abfragen, jeder Aufruf dauert selbst bei einer grundlegenden SELECTAnweisung übermäßig lange . Ich habe versucht, die Indizes neu zu erstellen und Statistiken zu aktualisieren, aber keinen Unterschied.
Ich habe nicht viel Erfahrung damit, daher ist es durchaus möglich, dass meine SQL-Abfrage falsch ist. In diesem Fall würde ich einen Fehler erwarten oder die Ausführung mit 0 Ergebnissen beenden, aber keines davon tritt auf.
Ich versuche, alle Instanzen einer 'TypeID' in den 5 Sekunden vor einer Zeit zu zählen, die auf der Tabelle ACALLS basiert.
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

