SQL Server 2008 – Data Compression

Im Rahmen der Kategorie “Schnelle Statements” anbei ein Funktionsaufruf, um das mögliche Einsparpotential der Datenkompression im SQL Server 2008 abschätzen zu können:

exec sp_estimated_data_compression_savings <Schemaname>, <Objektname>, <Index_ID>, <Parition_Nummer>, <Kompressionstyp>

Die wählbaren Kompressionstypen sind:

  • NONE
  • ROW
  • PAGE

Nicht vergessen sollte man aber trotz der berechneten Einsparpotentiale, das man für die initiale Kompression mehr Platz benötigt als vorher, da diese nach folgendem groben Ablauf funktioniert:

  • erzeugen einer Schattentabelle der zu kompressierenden Tabelle
  • Komprimieren der Daten aus der originären Tabelle in die Schattentabelle
  • umbenennen der Tabelle und der Schattentabelle, so das die Schattentabelle anschließend den originären Namen der Tabelle trägt
  • löschen der Ursprungstabelle

Daher wird für den Zeitraum der Kompression der originäre Platz der Tabelle + min. die berechnete neue Größe nach der Kompression benötigt.

Schnelle Statements – Ermittlung der Anzahl eines bestimmten Zeichens in einer Zeichenkette

Ich habe mich soeben entschlossen eine separate Kategorie für nützliche SQL-Statements zu eröffnen, die man evtl. mal brauchen könnte. Aus einem Anwendungsfall heraus gerade eben wurde es notwendig, in einer Datenbank abgelegte Netzwerkpfade nach ihrer Verzeichnistiefe zu sortieren. Als einzigen Anhaltspunkt dafür habe ich den UNC-Pfad, aus dem ich die Verzeichnistiefe anhand der Anzahl der enthaltenen \ ermitteln kann.

Mit dem folgenden Statement kann man die Anzahl eines bestimmten Zeichens in einer Zeichenkette ermitteln:

Select (Len(<Tabelle.Zeichenkette>) – Len(Replace(<Tabelle.Zeichenkette>, ‚<zu zählendes Zeichen‘, “))) from Tabelle

Viel Spaß beim nachahmen.