Komprimieren von Daten

02/11/2009 - 10:59 von Andreas Schädler | Report spam
Hallo NG

der aktuelle Stand:
Wir erstellen mit .NET einen String, welcher den Inhalt eines ASCII-File
darstellt und speichern diesen in eine Tabelle auf einem SQLServer 2005
(Archivierung). Wenn aus diesem String ein physikalisches File erstellt wird
hat es eine grösse von durchschnittlich 30kB. Es làsst sich zu ca. 95% zipen.

Wir wechseln nun auf einen SQLServer 2008 Enterprice und möchte dort über
unsere .Net Anwendung auch andere ASCII-Dateien in einer Tabelle abspeichern.
Diese können bis 300 MB gross werden und lassen sich zu 97% zipen.

Nun, es gibt die Möglichkeit von DATA_COPRESSION.
Habe dies mal auf die Bestehende Tabelle mit Inhalt probiert.
ALTER TABLE Exchange.ExportFileArchives REBUILD WITH (DATA_COMPRESSION = ROW)
Die Datengrösse der Tabelle von ca. 250 MB hat sich mit obigem Befehl um
ganze 100 kB verkleinert. (wirklich Daten, nicht reservierter Platz). Dafür
braucht der Index nun 200 kB mehr. Das ist nicht umbedingt das erwartete
Ergebnis.

Sollen die Dateine gezipt und und in ein binàres Feld abgelegt werden?
Oder ist es besser die neue "Fileablage-Funktion" des SQLServer zu
verwenden? (weis nicht wie das Ding heist, hab nur nebenbei davon gehört)
Müssten mit dieser Funktion die Files auch vorerst gezipt werden oder hat der
SQLServer eingebaute Funktionen?

Was empfehlt Ihr ein zu setzen.

Danke für Eure Tips und Gruss
Andreas
 

Lesen sie die antworten

#1 Christoph Ingenhaag
02/11/2009 - 11:30 | Warnen spam
Hallo Andreas,

schau doch mal ins passende Whitepaper
http://msdn.microsoft.com/en-us/lib...94051.aspx
und ins Blog des SQL Serverv Storage Engine Teams
http://blogs.msdn.com/sqlserverstor...fault.aspx

Viele Grüße
Christoph

"Andreas Schàdler" schrieb im
Newsbeitrag news:
Hallo NG

der aktuelle Stand:
Wir erstellen mit .NET einen String, welcher den Inhalt eines ASCII-File
darstellt und speichern diesen in eine Tabelle auf einem SQLServer 2005
(Archivierung). Wenn aus diesem String ein physikalisches File erstellt
wird
hat es eine grösse von durchschnittlich 30kB. Es làsst sich zu ca. 95%
zipen.

Wir wechseln nun auf einen SQLServer 2008 Enterprice und möchte dort über
unsere .Net Anwendung auch andere ASCII-Dateien in einer Tabelle
abspeichern.
Diese können bis 300 MB gross werden und lassen sich zu 97% zipen.

Nun, es gibt die Möglichkeit von DATA_COPRESSION.
Habe dies mal auf die Bestehende Tabelle mit Inhalt probiert.
ALTER TABLE Exchange.ExportFileArchives REBUILD WITH (DATA_COMPRESSION =
ROW)
Die Datengrösse der Tabelle von ca. 250 MB hat sich mit obigem Befehl um
ganze 100 kB verkleinert. (wirklich Daten, nicht reservierter Platz).
Dafür
braucht der Index nun 200 kB mehr. Das ist nicht umbedingt das erwartete
Ergebnis.

Sollen die Dateine gezipt und und in ein binàres Feld abgelegt werden?
Oder ist es besser die neue "Fileablage-Funktion" des SQLServer zu
verwenden? (weis nicht wie das Ding heist, hab nur nebenbei davon gehört)
Müssten mit dieser Funktion die Files auch vorerst gezipt werden oder hat
der
SQLServer eingebaute Funktionen?

Was empfehlt Ihr ein zu setzen.

Danke für Eure Tips und Gruss
Andreas

Ähnliche fragen