Neues im kommenden PostgreSQL 9.3

© Nuno Andre, 123RF

Datenbank-Tuning

PostgreSQL in der Version 9.3 steht vor der Tür. Das kommende Release bringt einige Neuerungen hinsichtlich Geschwindigkeit, Benutzbarkeit, aber auch SQL-Standardkonformität.
Der ADMIN 05/13 wirft einen Blick auf die frei verfügbaren Cloud-Frameworks von Eucalyptus über OpenNebula bis OpenStack. Gute Aussichten für skalierbare ... (mehr)

Mit der Version 9.3 liefert die PostgreSQL-Community wieder etliche wichtige, neue Features in einer Hauptversion. Sie ist das Werk vieler Entwickler weltweit und durchlief einen strengen Review-Prozess (Commitfest), der die Qualität des Quelltextes sicherstellt. In der Regel finden sich bis zu 100 Patches in diesen Commitfests – wegen der Menge muss besonders vor dem Feature Freeze einer neuen Hauptversion die dafür veranschlagte Zeit regelmäßig verlängert werden. Die Liste an hinzugekommenen Funktionen ist entsprechend beeindruckend. Dieser Artikel stellt die Wichtigsten vor.

Parallel Dump

Ein lange von den Anwendern (aber auch von Entwicklern) gefordertes Feature ist die Möglichkeit, Dumps einer Datenbank mit mehreren Threads oder Prozessen gleichzeitig auszuführen. PostgreSQL verwendet eine Multiprozessarchitektur, das heißt, es benutzt keine Threads (auch nicht auf Plattformen wie Windows, die sie eigentlich favorisieren). Um mit »pg_dump« parallel mehrere Objekte zu sichern, muss das Programm deshalb mehrere Datenbankverbindungen öffnen. Da jedoch »pg_dump« die Konsistenz eines Dumps auch mit nebenläufigen Transaktionen garantiert, müssen diese zu »pg_dump« gehörenden Datenbankverbindungen nun synchronisiert werden. Aus diesem Grund gestaltete sich die Entwicklung dieses Features recht langwierig.

Snapshot Cloning

Die Infrastruktur, die hierfür implementiert wurde, nennt sich Snapshot Cloning. Dieses Verfahren gestattet es, mehrere Transaktionen derart untereinander zu synchronisieren, dass sie denselben Zustand sehen, obwohl es sich doch um separate Datenbankverbindungen handelt. Grundsätzlich muss zuerst eine Transaktion gestartet werden, die dann synchronisiert werden kann. Alle weiteren Transaktionen importieren dann den dabei erzeugten Snapshot. Dies synchronisiert dann die jeweilige Transaktion mit ihrer "Elterntransaktion", beide haben dann dieselbe Sicht auf den Zustand der Datenbank.

Abbildung 1 verdeutlicht den Ablauf. Zunächst wird eine Transaktion gestartet. Diese muss den Isolationsgrad »REPEATABLE READ« oder »SERIALIZABLE« haben. »READ COMMITTED« ist nicht möglich, da sich innerhalb dieses Isolationsgrades der Snapshot nach jedem Kommando ändert und nicht dauerhaft für die Transaktion ist.

Abbildung 1: Die zweite Transaktion rechts bezieht sich auf einen zuvor angelegten Snapshot: So sieht sie dieselben Daten.

Mit der Funktion »pg_export_snapshot()« kann in jeder beliebigen Transaktion ein Snapshot exportiert werden. Die Rückgabe ist ein Datum vom Typ TEXT mit dem Bezeichner des Snapshots. Dieser Bezeichner kann in einer anderen Transaktion mit dem Kommnado »SET TRANSACTION SNAPSHOT« importiert werden.

Zu beachten ist, dass dies das erste Kommando innerhalb der Transaktion oder vor jedem anderen »SELECT« , »INSERT« , »UPDATE« oder »DELETE« sein muss. Ferner kann eine importierende Transaktion mit »SERIALIZABLE« -Isolationsgrad keinen Snapshot einer Transaktion importieren, deren Isolationsgrad kleiner ist.

comments powered by Disqus

Artikel der Woche

Container-Anwendungen isolieren mit Aporeto Trireme

Beim Umstieg auf Container-basierte Anwendungen sind viele Klippen zu umschiffen, dies gilt insbesondere für das Thema Security. So lassen sich Anwendungen nur schwer voneinander kontrollierbar isolieren. Hier setzt Aporeto mit Trireme an. Die Software sorgt dank einer attributbasierten Zugriffskontrolle für mehr Sicherheit. Wir stellen das Konzept anhand eines Beispiels vor. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Linux-Backup

Welche Backup-Lösung setzen Sie für Linux im professionellen Umfeld ein?

  • keine
  • eigene Scripts
  • rsnapshot
  • rdiff-backup
  • Bacula
  • Bareos
  • Borg
  • Duplicity
  • Amanda
  • Burp
  • Clonezilla
  • Acronis
  • Arkeia
  • SEP sesam
  • Veeam
  • Redo Backup
  • Relax-and-Recover
  • andere kommerzielle Software
  • andere Open-Source-Software

Google+

Ausgabe /2017

Microsite