25 messaggi dal 07 settembre 2004
Abbiamo un database usato per un'applicazione industriale web....


db = MS SQL
server = SQL server
S.O. = IIS di windows 2000(In poche parole un client che funge da server ma con soli 10 accessi)

Circa 35 tabelle tutte molto piccole in quanto molte sono semplici decodifiche:

20 di esse hanno al massimo 5 campi si aggirano attorno ai 30 record l'una ad eccezione di una tabella che ha 250 record

altre tabelle con piu' campi (massimo 22) e la piu' grande di esse ha 5000 record e solo una di esse supera i 500 record

la tebella piu' corposa del DB (se puo' essere cosi' definita)
ha 3 record id, data, valore e circa 80000 (ottantamila) record.....


peso dei due file


mydb.mdf = 12 Mega
mydb.ldf = 31 Giga


la mia domanda è....

COSA SBAGLIO?????,,, PERCHE' CON COSI' POCHI DATI E CON UN DB COSI' PICCOLO IL FILE .ldf PESA COSI' TANTO?????

SBAGLIO QUALCOSA NEL SETTAGGIO DELLE PROPRIETA' DEL DB????
PESA COSI? TANTO PERCHE? LA MACCHINA NON E' UN SERVER MA USA IIS?????

SE PASSASSIMO AD UN SERVER VERO E PRORIO (COME PRESTO FAREMA) CAMPIEREBBE QUALCOSA??????

METTIAMO IL CASO CHE I MIEI SETTAGGI SIANO OK (secondo me non possibile)... CON MYSQL LA SITUAZIONE MIGLIOREREBBE?????

GRAZIE 1000 A CHI RISPONDERA' O DIRA' LA SUA.....

andrea vermetti

andrea.vermetti@virgilio.it
823 messaggi dal 05 agosto 2002
Il file ldf è il log delle transazioni, a differenza del file dei dati esso tende sempre a crescere ed è importante attivare una politica di gestione.
Dovresti schedulare un backup del log e successivamente usare DBCC SHRINKFILE sul log delle transazioni (http://support.microsoft.com/default.aspx?scid=kb;EN-US;q272318).
Puoi anche cambiare il recovery model da FULL a SIMPLE, è meno sicuro per i dati ma riduce le dimensioni del log delle transazioni.
MySQL di default ha il log delle transazioni disabilitato, quindi non dà problemi, ma RIDUCE MOLTO L'AFFIDABILITA', se lo abiliti hai un problema simile a quello di SQLServer.
Il "problema" del log dipende dal db, e succederebbe anche su un server dedicato.

Stick to your guns.
Formazione su MySQL o Firebird? Contattami!
1.024 messaggi dal 19 dicembre 2003
Contributi | Blog
andrea.vermetti ha scritto:

mydb.mdf = 12 Mega
mydb.ldf = 31 Giga

COSA SBAGLIO?????,,, PERCHE' CON COSI' POCHI DATI E CON UN DB COSI' PICCOLO IL FILE .ldf PESA COSI' TANTO?????


...la crescita anomala del t-log indica una inefficiente piano di gestione del t-log. Nel tuo caso ritengo che sia del tutto assente qualunque strategia di backup dello stesso.

Innanzitutto devi immaginare il transaction log (t-log) come un insieme di contenitori (virtual log) che vengono riempiti ciclicamente. A seconda delle necessità (e delle impostazioni delle sue proprietà) il t-log può espandersi e vengono generati altri virtual log che vengono progressivamente riempiti e utilizzati da SQL Server.

Per liberare lo spazio nel t-log devi eliminare la parte di transazioni che e' stata consolidata fisicamente dal meccanismo di CHECKPOINT. Il checkpoint è il processo in cui le pagine modificate da transazioni già concluse vengono scritte materialmente su disco.
Il processo di checkpoint "dichiara inattiva" la porzione di t-log che è stata resa permanente su disco e un successivo backup del t-log (eventualmente specificando l'opzione WITH TRUNCATE_ONLY se non intendi salvare il log delle transazioni) ne svuota il contenuto ma non restituisce tale spazio al sistema operativo ma lo rende nuovamente disponibile per l'utilizzo da parte del t-log.

Quindi l'attività di backup riduce le dimensioni logiche del file di log e non le sue dimensioni fisiche. Per restituire lo spazio "inutilizzato" del t-log (ossia i virtual log inattivi) al sistema operativo è possibile utilizzare le istruzioni DBCC SHRINKDATABASE oppure DBCC SHRINKFILE.
Se l'opzione del database "Truncate log on checkpoint" e' attiva (versione 7.0 di SQL Server) oppure il database è in SIMPLE RECOVERY MODE (versione 2000), il log viene automaticamente svuotato (nelle sue dimensioni logiche) al CHECKPOINT.

Ci sono casi in cui il file di log potrebbe comunque non ridursi oppure ridursi solo in parte.
Questo comportamento apparentemente anomalo trova invece spiegazione in quanto detto precedentemente in merito ai virtual log. Dal momento che il virtual log è utilizzato in maniera ciclica la riduzione delle dimensioni del t-log è vincolato al fatto che la parte inattiva del log delle transazioni si trovi nella parte finale del log stesso.

E' possibile utilizzare il comando

DBCC LOGINFO(nomedb)

(si tratta di una istruzione non documentata di cui non troverai traccia nel Book On Line di SQL Server) per verificare dove si trova la parte attiva del log; la parte attiva e' quella marcata con Status = 2 e qualora, come detto, si trovasse nella parte terminale del file, la compattazione del file di log non sara' quindi eseguita finche' la parte attiva non si sposterà nella parte iniziale.

E' possibile muovere la parte attiva del log in testa al file continuando a generare transazioni, svuotando i virtual log con i comandi di BACKUP LOG ed eseguendo il comando DBCC SHRINKFILE finche' il file non si ridimensiona (tieni comunque presente che il transaction log non puo' comunque avere dimensione inferiore alla dimensione dei singoli virtual log e tale dimensione e' determinata in fase di creazione del log).

Inoltre ti suggerisco di valutare quale recovery model è più adatto alle tue esigenze. SQL Server 2000 ti da la possibilità di scegliere 3 impostazioni di Recovery Model ciascuno con le proprie peculiarità e che, a seconda della strategia di disaster recovery in uso, può rivelarsi più o meno idoneo alla propria esigenza.

Per la vastità degli argomenti trattati e non essendo possibile trasformare questo messaggio in un libro ti suggerisco di far riferimento al Book On Line di SQL Server per eventuali approfondimenti.

Ciao...

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.