Memoria Ram (di background) occupata da SQL server a caricamento dati ...

lunedì 20 ottobre 2008 - 21.48

paovanm Profilo | Junior Member

Ciao,
vi espongo il mio problema: Nel caricamento di grossi quantitativi di dati in un database SQL server (2005) mediante l’utilizzo di un programma esterno che consente di aprire una connessione ad un DB SQL, puntare ad una determinata tabella del DB, aggiungere records e chiudere la connessione), sembra che SQL mantenga un importante quantitativo di memoria RAM (o memoria virtuale) occupata anche una volta che tutto il caricamento è avvenuto. E’ come se pur essendo SQL chiuso ed il caricamento ultimato (correttam, una parte del programma continuasse a girare in background mantenendosi in memoria i dati inseriti. E’ plausibile che tutto ciò possa accadere?ente) Se sì come potrei fare per liberare memoria man mano che avvenga il contemporaneo caricamento dei dati? Ovvero come posso “svuotare” questa sorta di memoria occupata (magari lanciando una stringa sql…)?
Grazie in anticipo,
Michela

lbenaglia Profilo | Guru

>E’ plausibile che tutto ciò possa accadere?

Ciao Michela,

Il comportamento che riscontri è del tutto normale.
SQL Server come molti altri DBMS server è progettato per utilizzare tutta la memoria RAM necessaria al suo funzionamento.
In questo modo le data pages ed i piani di esecuizione rimarranno disponibili per successive elaborazioni (l'accesso in RAM è n ordini di grandezza più efficiente rispetto all'accesso al disco).
Nel momento in cui un'applicazione richieda un certo quantitativo di memoria, SQL Server provvederà ad eliminare le pagine dati ed i piani di esecuzione più vecchi, rilasciando risorse al sistema.
Quindi, per riassumere, non occorre che tu faccia alcuna operazione di "pulizia".

>Grazie in anticipo,
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

paovanm Profilo | Junior Member

Il problema è che la memoria non viene mai ripulita neppure a fine caricamento dei dati. Arriva addirittura ad occupare la memoria virtuale ed a bloccare ogni applicazione. Riesco a liberarla solo riavviando il PC. Come potrei ovviare a tutto questo?
Grazie ancora
Michela

lbenaglia Profilo | Guru

>Il problema è che la memoria non viene mai ripulita neppure a
>fine caricamento dei dati.
Lo so, e come ti ho detto è un comportamento assolutamente normale.

>Arriva addirittura ad occupare la
>memoria virtuale ed a bloccare ogni applicazione.
Questo un po' meno
Quanta RAM ha il server?
SQL Server è configurato per occuparla tutta?
Nel caso il server ospiti più servizi/applicazioni è possibile fissare la memoria massima utilizzabile da SQL Server, utilizzando SSMS o la stored procedure di sistema sp_configure.

>Grazie ancora
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

paovanm Profilo | Junior Member

Grazie mille, ora proviamo.
Abbiamo trovato un sito molto utile: http://www.teratrax.com/articles/sp_configure_max_memory.html
Michela
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5