2010-08-16 14 views
5

Per qualche motivo il mio file MDF è di 154gigs, tuttavia, ho caricato solo 7 GB di dati da file flat. Perché il file MDF è molto più grande dei dati di origine effettivi?Dimensione file MDF molto più grande dei dati effettivi

Maggiori informazioni:

Solo pochi tavoli con ~ 25 milioni di righe. Nessun campo varchar di grandi dimensioni (il più grande è 300, la maggior parte è inferiore a varchar (50) .Tale non larghe tabelle < 20. Inoltre, nessuna delle tabelle di grandi dimensioni è ancora indicizzata.Le tabelle con gli indici hanno meno di 1 milione di righe. t uso char, solo varchar per le stringhe. Tipo di dati non è il problema.

venuto fuori che era il file di log, non il file mdf. il file MDF è in realtà 24gigs che sembra più ragionevole, ma ancora grande IMHO.

UPDATE:

Ho risolto il problema con il file LDF (log) cambiando il modello di recupero da FULL a semplice, ma questo server è utilizzato solo per lo sviluppo interno e l'elaborazione ETL. Inoltre, prima di passare a SEMPLICE ho dovuto ridurre il file LOG. La riduzione non è raccomandata nella maggior parte dei casi, tuttavia, questo era uno di quei casi in cui il file di registro non doveva mai diventare così grande e così veloce. this

risposta

3

Potrebbe essere un sacco di motivi, forse stai usando char (5000) invece di varchar (5000), forse stai usando bigints invece di int, nvarchar quando tutto ciò che serve è varchar ecc ecc ecc. Forse stai usando molti indici per tabella, questi si sommano tutti. Forse le tue impostazioni di aumento automatico sono sbagliate. Sei sicuro che questo è il file MDF e non il file LDF giusto?

+0

Inoltre, fai attenzione ai fattori di riempimento dubbi sugli indici: ho rilevato indici in più di un'occasione con fattore di riempimento del 10% anziché del 90% previsto. :) –

+0

Inoltre, la frammentazione dell'indice potrebbe essere un fattore. http://www.sqlmag.com/article/tsql3/automatic-reindexing.aspx – David

+1

Mi sento sciocca. È il file di registro. –

4

Poiché il file MDF è stato allocato con 154 Gb, o è cresciuto fino a 154 Gb attraverso varie operazioni. Un file di database ha almeno la dimensione dei dati in esso contenuti, ma può essere superiore all'importo utilizzato di qualsiasi importo.

Una domanda ovvia sarà come si misura la quantità di dati nel database? Hai usato sp_spaceused? Hai controllato sys.allocation_units? Hai indovinato?

Se la dimensione utilizzata è effettivamente 7 Gb su 154 Gb, quindi si dovrebbe lasciare così com'è. Il database è stato dimensionato da qualcuno di queste dimensioni, o è cresciuto, ed è probabile che cresca. Se credi che la crescita o il pre-dimensionamento sia stato accidentale, allora il punto precedente si applica ancora e dovresti lasciarlo così com'è.

Se si è assolutamente sicuri che la sovrassegnazione sia un errore, è possibile ridurre il database, con tutti gli negative consequences of shrinking.

+0

Buone informazioni. Non sono un amministratore del database, ma leggerò alcune di queste cose. Grazie. –

0

O AUTO SHRINK non è abilitato o La dimensione iniziale è stata impostata sul valore maggiore.

Problemi correlati