CPU inattiva di SQL Server 2016 e query estremamente lente


10

Ho un'installazione di circa 10 giorni di WinServer2012R2 e SQL Server Express 2016 per i test. Sono l'unico utente su questa macchina. Un database con un .bak da SQL Server 2005 di ~ 250 MB viene ripristinato senza problemi. Dopo il riavvio della macchina, il processo "SQL Server NT - 64 bit" utilizza CPU allo 0%.

Dopo un paio di minuti o ore e alcune semplici query (nessun aggiornamento / inserimento!) Dall'utilizzo della CPU SSMS di "SQL Server NT - 64 Bit" salta all'improvviso a ~ 15% e rimane lì, anche quando è inattivo. Da quel momento in poi le query che di solito impiegano meno di un secondo impiegano improvvisamente 2 minuti. Durante una query effettiva, l'utilizzo della CPU NON aumenta. Il server diventa praticamente inutilizzabile in questo stato.

Solo la connessione di SQL Server Profiler richiede quindi> 30 sec. Accanto alle mie query vedo solo pochissime query da SQLServerCEIP / SQLTELEMETRY, ~ 3 al minuto.

Il riavvio di SQL Server non lo risolve. L'utilizzo della CPU torna al 15% circa. Anche dopo ore SQL Server non viene ripristinato. Solo il riavvio dell'intera macchina risolve il problema.

Poiché si tratta di un'installazione "out of the box", esiste solo un piccolo database, praticamente nessuna query, solo io come utente e probabilmente nessun blocco, i numerosi articoli su problemi di prestazioni regolari di SQL Server parlano di molte cose che don non si applica davvero qui. Sembra che SQL Server voglia concentrarsi esclusivamente su alcune attività interne.

Questa è una macchina virtuale con 2 GB di RAM e doppio Xeon a 2 GHz. Ho anche VS2016 ed è davvero veloce. Nessun antivirus, nemmeno Windows Defender. Già in ritardo qui. Proverò lo sp_whoisactive domani. Mi chiedo davvero CHE COSA stia facendo SQL-Server ... Sulla macchina precedente con 1 GB lo stesso DB funzionava con SQLServer2005 per 10 anni senza problemi ...

Non sono un esperto di SQL-Profiler. Dove dovrei iniziare a cercare?


Potrebbe essere una cattiva installazione. Prendi in considerazione una nuova installazione del sistema operativo e di SQL. Tutti i service pack. Puoi inseguire cose come questa per sempre. Se il problema persiste, puoi ragionevolmente chiudere l'installazione.
paparazzo,

7
Hai un antivirus installato? Aggiungerei un'esclusione per l'eseguibile di SQL Server, nonché i file MDF, NDF e LDF.
Randolph West,

1
Hai esaminato anche le impostazioni di risparmio energetico?
Randolph West,

Ricordo un comportamento simile del 2005 se l'opzione del database auto_update_statistics_asyncera attivata.
Roger Wolf,

Prova a portare offline il database e controlla l'utilizzo della cpu. Se l'utilizzo della cpu non scende, il suo problema con il motore di database del server sql.
Muhammad Yousaf Sulahria,

Risposte:


3

Dato che l'utilizzo della CPU è basso (e hai un ottimo set di CPU), per prima cosa verificherei la pressione della memoria. Con SQL Express 2016 hai un limite di 1410 MB di memoria, ma la tua VM ha solo 2 GB. Dai alla tua VM 1 GB di memoria in più e vedi se aiuta. È inoltre possibile controllare il registro di SQL Server se si sta eseguendo il paging della memoria su file.

Se il problema persiste, prova a impostare il database LEGACY_CARDINALITY_ESTIMATION su ON. Riferimento: utilizzo del livello di compatibilità DB 130 con Old CE in SQL Server 2016 . Ci siamo imbattuti in questo con alcuni dei nostri aggiornamenti; i risultati varieranno con ogni database.


Nel frattempo ho scoperto che l'avvio / l'arresto di un altro software con un uso eccessivo della memoria (come Visual Studio) peggiora il problema in modo riproducibile. Quindi vorrei confermare che è un problema di memoria: SQL Server inizia il paging quando viene spremuto troppo.
Andreas Steidle,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.