MDF-Datei-Größe viel größer als die tatsächlichen Daten
Für einige Grund meine MDF-Datei ist 154gigs, allerdings habe ich nur geladen, 7 gigs im Wert von Daten aus flachen Dateien. Warum ist die MDF-Datei so viel größer als die tatsächliche Quelle der Daten?
Mehr info:
Nur ein paar Tische mit ~25 Millionen Zeilen. Keine große varchar-Felder (der größte ist 300, die meisten sind weniger als varchar(50). Nicht sehr große Tabellen < 20 Spalten. Auch hat keines der großen Tabellen sind indiziert noch. Tabellen mit Indizes haben weniger als 1 million Zeilen. Ich glaube nicht, verwenden Sie char, nur varchar-für Streicher. Datentyp ist nicht das Problem.
Stellte sich heraus, es war die log-Datei und nicht die mdf-Datei. Die MDF-Datei ist eigentlich 24gigs das scheint vernünftiger, aber immer noch groß, IMHO.
UPDATE:
Habe das problem behoben mit der LDF (log) - Datei durch ändern Sie das Wiederherstellungsmodell von vollständig auf einfach. Das ist okay, denn dieser server ist nur für die interne Entwicklung und die ETL-Verarbeitung. Zusätzlich, vor dem Wechsel zu EINFACHEN hatte ich zum verkleinern der PROTOKOLLDATEI. Eine Verkleinerung ist nicht zu empfehlen aber in den meisten Fällen war dies einer der Fälle, wo die log-Datei sollte nie so groß und so schnell. Für weitere Informationen siehe diese
InformationsquelleAutor O.O | 2010-08-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte eine Menge Gründe, vielleicht sind Sie mit char(5000) anstelle von varchar(5000), vielleicht sind Sie mit bigints statt int, nvarchar, wenn Sie alles, was Sie brauchen, ist varchar etc etc etc. Vielleicht verwenden Sie eine Menge von Indizes pro Tabelle, diese summieren sich. Vielleicht ist Ihr die automatische Vergrößerung-Einstellungen sind falsch. Sie sind sicher, dies ist die MDF und nicht die LDF-Datei richtig?
Auch, Index-Fragmentierung könnte ein Faktor sein. sqlmag.com/article/tsql3/automatic-reindexing.aspx
Ich fühle mich dumm. Es ist die log-Datei.
Haha, dumm! :p Das ist ein großer log-Datei für eine vergleichsweise kleine Menge von Daten - wie haben Sie laden Sie es - mithilfe des SSIS?
Stellen Sie sicher, dass Sie eine Sicherung der log-Datei. Von BOL: "Unter dem vollständigen Wiederherstellungsmodell oder dem massenprotokollierten Wiederherstellungsmodell, wenn das Transaktionsprotokoll nicht gesichert wurde kürzlich Sicherung könnte das sein, was verhindert, dass das abschneiden des Protokolls. Wenn das Protokoll noch nie gesichert wurde, müssen Sie zwei Protokollsicherungen der Datenbank-Engine zum abschneiden der log zu dem Zeitpunkt der letzten Sicherung. Abschneiden des Protokolls befreit, Platz für neue log-Einträge. Zu halten das Logbuch füllt sich wieder, nehmen Sie log-sicherungen Häufig."
InformationsquelleAutor SQLMenace
Da die MDF-zugeordnet wurde, mit 154Gb, oder hat sich 154Gb durch verschiedene Operationen. Eine Datenbank-Datei hat mindestens die Größe der Daten, aber es kann größer sein als die verwendete Menge von jedem Betrag.
Sich eine offensichtliche Frage wird wie Messen Sie die Menge der Daten in der Datenbank? Haben Sie
sp_spaceused
? Haben Siesys.allocation_units
? Hast du das erraten?Wenn die verwendete Größe ist in der Tat 7Gb aus 154Gb, dann sollten Sie es belassen, wie es ist. Die Datenbank angepasst wurde, indem jemand in dieser Größe, oder ist gewachsen, und es ist wahrscheinlich, zu wachsen wieder. Wenn Sie glauben, dass das Wachstum oder die pre-sizing war zufällig, dann wird der Vorherige Punkt gilt weiterhin, und Sie sollten lassen Sie es wie es ist.
Wenn Sie absolut positiv, overallocation ist ein Fehler, können Sie die Datenbank verkleinern, mit allen die negativen Folgen der schrumpfenden.
InformationsquelleAutor Remus Rusanu
Nur für den Fall, dies ist nützlich für jemanden da draußen, fand diese Abfrage in dba.stackexchange, verwendet es die sys.dm_db_database_page_allocations die zählt die Anzahl der Seiten pro Objekt, dies umfasst internen Speicher und gibt Ihnen einen echten überblick über den Abstand der von Ihrer Datenbank.
Dank Solomon Rutzky:
https://dba.stackexchange.com/questions/175649/sum-of-table-sizes-dont-match-with-mdf-size
InformationsquelleAutor Saul Cruz
AUTO-SHRINK ist nicht aktiviert oder Die ursprüngliche Größe wurde eingestellt, um den größeren Wert.
InformationsquelleAutor ydpages