Sql server 2005 vs mysql domanda sulla cache

venerdì 10 novembre 2006 - 16.40

bule Profilo | Junior Member

ciao a tutti
avrei il seguente quesito ...
ho un database su sql server 2005 exprees in cui una tabella è abbastanza corposa 400,000 record circa se spengo il computer dove gira sql server e poi lo riaccendo la prima query che viene eseguita ci impiega circa 6 secondi. se la eseguo la seconda volta ci impiega 200 ms anche se cambio i parametri, cioè la struttura della query è la stessa ma cabiano le clausole nel where...

ora dopo aver letto un po in giro ho scoperto che questo è dovuto alla eliminazione della data e procedure cache di sql server
difatti lo stesso comportamento nella lentezza cìè anche l'esecuzione di questi comandi

DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

ora ok ci può stare credo che la cache venga eliminata se spengo e riavvio il server database quello che non mi pare posibile è che un mio amico utilizzando mysql non ha questo problema ciioè la prima query dopo che il server database viene riavviato è rapida come le successive...

la domanda è dunque questa se in mysql succede questo non c'è un modo per salvare la cache in sql server ? in modo da evitare questo fastidioso comporatmento ?

lbenaglia Profilo | Guru

>la domanda è dunque questa se in mysql succede questo non c'è
>un modo per salvare la cache in sql server ? in modo da evitare
>questo fastidioso comporatmento ?

Ciao bule,

Qualsiasi operazione sui dati eseguita in SQL Server avviene in RAM.
Alla prima esecuzione di una query, le data pages interessate vengono caricate da disco nel buffer pool, quindi alla seconda esecuzione della stessa query non occorre ricaricare nuovamente le pagine.
Spegnendo il computer la RAM viene ovviamente svuotata, quindi al riavvio si dovrà rieseguire l'intero processo.

Domanda 1: Per quale motivo hai la necessità di spegnere un server?
Domanda 2: Per quale motivo carichi 400.000 righe? Fai una SELECT * FROM Tabella?!

Ora, l'unico modo che mi viene in mente per salvare lo stato della RAM su disco è quello di ibernare il computer invece che spegnerlo, in questo modo la RAM verrà salvata nel file hiberfil.sys. Al successivo riavvio verrà ripristinato l'intero stato del PC.

Non ho provato ma dovrebbe andare.

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

bule Profilo | Junior Member

grazie mille per la gradita solerzia nella risposta...

Domanda 1: Per quale motivo hai la necessità di spegnere un server?
l'applicazione è stata sviluppata in modo un pò strano e copia in locale, cioè in un computer di un utente, una parte di un database molto grosso che effettivamnte gira in un server che non dovrebbe essere mai spento...

Domanda 2: Per quale motivo carichi 400.000 righe? Fai una SELECT * FROM Tabella?!
no mi son spiegato male...la tabella su cui viene eseguita la query è attualmente di 400.000 righe, destinate a crescer fino circa 8,i9 milioni...le righe restituite sono una ottantina

ma è possibile che MYsql non soffra di questa problematica ?

ps ibernare sugnifica mettere il pc in standby vero?




lbenaglia Profilo | Guru

>Domanda 1: Per quale motivo hai la necessità di spegnere un server?
>l'applicazione è stata sviluppata in modo un pò strano e copia
>in locale, cioè in un computer di un utente, una parte di un
>database molto grosso che effettivamnte gira in un server che
>non dovrebbe essere mai spento...
Per quale motivo avete fatto una cosa del genere?

>Domanda 2: Per quale motivo carichi 400.000 righe? Fai una SELECT
>* FROM Tabella?!
>no mi son spiegato male...la tabella su cui viene eseguita la
>query è attualmente di 400.000 righe, destinate a crescer fino
>circa 8,i9 milioni...le righe restituite sono una ottantina
Ma la query è remota o in locale sui dati appena copiati?

>ma è possibile che MYsql non soffra di questa problematica ?
Ah boh, leggi al documentazione inerente all'architettura di MySQL...

>ps ibernare sugnifica mettere il pc in standby vero?
Yep.

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

bule Profilo | Junior Member

ah boh volevano che fosse fatto così....

cmq una volta scaricati i dati le query vengono fatte in locale...

leggerò in giro su MySql, il fatto è che mi sembra proprio strano che alla microsoft non abbiano risolto questo problema anche se effettivamnte è un problema un pò starno , lo ammetto..

lbenaglia Profilo | Guru

>leggerò in giro su MySql, il fatto è che mi sembra proprio strano
>che alla microsoft non abbiano risolto questo problema anche
>se effettivamnte è un problema un pò starno , lo ammetto..

Il fatto è che è un NON problema
I server non sono fatti per essere spenti come i normali client, se non per motivi ben precisi (come ad esempio per manutenzione) oppure in caso di crash.
Quindi se riattivando un server che monta una istanza SQL Server occorre attentede 6 secondi per l'esecuzione di una query invece che 200ms, direi che non è certo un dramma, non trovi?

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

bule Profilo | Junior Member

effettivamnte il tuo ragionamnto non fà una piega...leggerò comunque in giro come funziona Mysql magari se trovo qualcosa di interessante te lo dico ...ciao e grazie...
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5