Cloud-First-Strategien sind inzwischen die Regel und nicht mehr die Ausnahme und Workloads verlagern sich damit in die Cloud – auch Datenbanken. Dort geht es ... (mehr)

Zusammengefasstes Erzeugen häufiger Werte

Das Anlegen erweiterter Statistiken mittels "CREATE STATISTICS" wurde um die Fähigkeit erweitert, die häufigsten Werte für mehrere Spalten zusammengefasst zu erzeugen. Dies ermöglicht bessere Heuristiken im Fall von Abfragen mit WHERE-Prädikaten, die mehrere Spalten mit Bezug zueinander verwenden wollen. Der PostgreSQL-Optimizer berechnet standardmäßig lediglich die Kosten einzelner Spalten und lässt etwaige statistische Beziehungen von Spalten untereinander unberücksichtigt.

Spalten ohne explizite Werte

Mit PostgreSQL 12 hält nun auch ein neues Feature aus dem SQL-Standard Einzug: die "Generated Columns". Dabei handelt es sich um Spalten in Tabellen, die keine expliziten Werte aufnehmen. Sie werden stattdessen auf Basis vorhandener Spaltenwerte anhand eines vergebenen SQLAusdrucks berechnet und gespeichert. PostgreSQL ergänzt die aus dem SQLStandard übernommene Syntax um das Schlüsselwort "STORED". Dies weist die Datenbank an, den angegebenen Ausdruck bei INSERT und UPDATE zu materialisieren und physisch zu speichern. Daher benötigen derart berechnete Spaltenwerte auch entsprechenden Speicherplatz. Virtuell berechnete Spaltenwerte, die PostgreSQL erst beim Lesen berechnet und keinen Speicherplatz benötigen, unterstützt die neue Funktionalität nicht.

Generierte Spaltenwerte können aus SQLAusdrücken ohne Seiteneffekte bestehen, dürfen aber keine Subqueries oder Referenzen auf andere generierte Spaltenwerte haben. Des Weiteren kann eine generierte Spalte nicht Teil eines Partitionsschlüssels sein. Allerdings ist PostgreSQL in der Lage, generierte Spaltenwerte auf sogenannte Fremdtabellen (Foreign Tables) zu erzeugen, die mit der seit längerem unterstützten SQL/MED-Schnittstelle externe Datenquellen anbinden. Generierte Spalten lassen sich auch nicht explizit modifizieren; Änderungen erfahren diese Spalten ausschließlich durch Modifikationen der referenzierten Spalten. Bild 3 zeigt ein Beispiel anhand einer Preistabelle und automatisch berechneter Mehrwertsteuer mithilfe einer Generated Column.

Bild 3: Generated Columns sind gegen Modifikationen geschützt.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2021