{"id":9972,"date":"2013-09-09T10:00:04","date_gmt":"2013-09-09T08:00:04","guid":{"rendered":"https:\/\/www.credativ.de\/blog\/credativ-inside\/postgresql-9-3\/"},"modified":"2013-09-09T10:00:04","modified_gmt":"2013-09-09T08:00:04","slug":"postgresql-9-3","status":"publish","type":"post","link":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/","title":{"rendered":"PostgreSQL\u00ae 9.3"},"content":{"rendered":"<div class=\"field field-name-body field-type-text-with-summary field-label-hidden\">\n<div class=\"field-items\">\n<div class=\"field-item even\">\n<p><a title=\"PostgreSQL&lt;sup&gt;\u00ae&lt;\/sup&gt; 9.3\" href=\"http:\/\/www.postgresql.org\/about\/news\/1481\/\">PostgreSQL<sup>\u00ae<\/sup> 9.3<\/a> ist da! Die neue Hauptversion bringt viele Verbesserungen und neue Funktionen. Dieser Artikel stellt einige der interssanten Neuerungen vor.<\/p>\n<h2>Verbessertes Locking mit Fremdschl\u00fcsseln<\/h2>\n<p><a title=\"Fremdschl\u00fcssel\" href=\"http:\/\/www.postgresql.org\/docs\/9.3\/static\/ddl-constraints.html#DDL-CONSTRAINTS-FK\" target=\"_blank\" rel=\"noopener noreferrer\">Fremdschl\u00fcssel<\/a> sind unabdingbar f\u00fcr die referentielle Integrit\u00e4t der Daten. Allerdings brachten diese bis einschlie\u00dflich PostgreSQL<sup>\u00ae<\/sup> 9.2 auch unter bestimmten Bedingungen Lockingprobleme bei UPDATE auf Spalten mit Fremdschl\u00fcsseln mit sich. Vor allem bei \u00fcberlappenden Aktualisierungen mehrerer Transaktionen \u00fcber einen Fremdschl\u00fcssel kann es sogar zu Deadlocks kommen. Das folgende Beispiel ist in PostgreSQL<sup>\u00ae<\/sup> 9.2 problematisch, exemplarisch an diesem einfachen Datenmodell demonstriert:<\/p>\n<div class=\"geshifilter\">\n<pre class=\"postgresql geshifilter-postgresql\">CREATE TABLE parent(id integer, value text);\r\nALTER TABLE parent ADD PRIMARY KEY(id);\r\nCREATE TABLE child(id integer, parent_id integer REFERENCES parent(id), value text);\r\nINSERT INTO parent VALUES(1, 'bob');\r\nINSERT INTO parent VALUES(2, 'andrea');<\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Zwei Transaktionen, jeweils Session 1 und Session 2 genannt, werden zeitgleich in der Datenbank gestartet:<\/p>\n<p>Session 1<\/p>\n<div class=\"geshifilter\">\n<pre class=\"postgresql geshifilter-postgresql\">BEGIN;\r\nINSERT INTO child VALUES(1, 1, 'abcdef');\r\nUPDATE parent SET value = 'thomas' WHERE id = 1;<\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Session 2<\/p>\n<div class=\"geshifilter\">\n<pre class=\"postgresql geshifilter-postgresql\">BEGIN;\r\nINSERT INTO child VALUES(2, 1, 'ghijkl');\r\nUPDATE parent SET value = 'thomas' WHERE id = 1;\r\n<\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Session 1 und Session 2 f\u00fchren beide den INSERT erfolgreich aus, der UPDATE blockiert jedoch in Session 1, da der INSERT in Session 2 einen sogenannten <em>SHARE LOCK\u00a0<\/em>auf das Tupel mit dem Fremdschl\u00fcssel h\u00e4lt. Dieser steht in Konflikt mit der Sperre, die der UPDATE auf den Fremdschl\u00fcssel haben m\u00f6chte. Nun versucht Session 2 seinerseits seinen UPDATE abzusetzen, dies erzeugt jedoch wiederum einen Konflikt mit dem UPDATE aus Session 1; Ein Deadlock ist entstanden und wird automatisch in PostgreSQL<sup>\u00ae<\/sup> 9.2 aufgel\u00f6st. In diesem Fall wird jedoch die Transaktion in Session 2 abgebrochen:<\/p>\n<div class=\"geshifilter\">\n<pre class=\"text geshifilter-text\">ERROR:  deadlock detected\r\nDETAIL:  Process 88059 waits for ExclusiveLock on tuple (0,1) of relation 1144033 of database 1029038; blocked by process 88031.\r\nProcess 88031 waits for ShareLock on transaction 791327; blocked by process 88059.<\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p>In PostgreSQL<sup>\u00ae<\/sup> 9.3 gibt es jetzt ein deutlich verfeinertes Locking bei Aktualisierungen auf Zeilen und Tabellen mit Fremdschl\u00fcsseln, die das angef\u00fchrte Problem entsch\u00e4rfen. Hierbei werden Tupel, die kein gezieltes UPDATE auf einen Fremdschl\u00fcssel darstellen (d.h. der Wert eines Fremdschl\u00fcssels wird nicht ver\u00e4ndert), mit einem schw\u00e4cheren Lock (<a title=\"FOR NO KEY UPDATE\" href=\"http:\/\/www.postgresql.org\/docs\/9.3\/static\/sql-select.html#SQL-FOR-UPDATE-SHARE\" target=\"_blank\" rel=\"noopener noreferrer\">FOR NO KEY UPDATE)<\/a> gesperrt. F\u00fcr das einfache Pr\u00fcfen eines Fremdschl\u00fcssels verwendet PostgreSQL<sup>\u00ae<\/sup> des weiteren den neuen <a title=\"FOR KEY SHARE\" href=\"http:\/\/www.postgresql.org\/docs\/9.3\/static\/sql-select.html#SQL-FOR-UPDATE-SHARE\" target=\"_blank\" rel=\"noopener noreferrer\">FOR KEY SHARE<\/a> Lock, der hiermit nicht in Konflikt steht. Dies verhindert im gezeigten Beispiel einen Deadlock, der UPDATE in Session 1 wird zun\u00e4chst ausgef\u00fchrt, der in Konflikt stehende UPDATE in Session 2 muss warten, bis Session 1 erfolgreich die Transaktion best\u00e4tigt oder zur\u00fcckrollt.<\/p>\n<h2>Parallel pg_dump<\/h2>\n<p><a title=\"pg_dump\" href=\"http:\/\/www.postgresql.org\/docs\/9.3\/static\/app-pgdump.html\" target=\"_blank\" rel=\"noopener noreferrer\">pg_dump<\/a> besitzt mit der neuen Kommandozeilenoption -j die M\u00f6glichkeit, parallel Tabellen und deren Daten zu sichern. Diese Funktion kann einen Dump sehr gro\u00dfer Datenbanken erheblich beschleunigen, da Tabellen gleichzeitig gesichert werden k\u00f6nnen. Dies funktioniert nur mit dem\u00a0<em>Directory<\/em> Ausgabeformat (-Fd) von pg_dump. Mittels pg_restore k\u00f6nnen diese Dumps dann ebenfalls mit mehreren Restoreprozessen gleichzeitig wiederhergestellt werden.<\/p>\n<h2>Updatable Foreign Data Wrapper und postgres_fdw<\/h2>\n<p>Mit PostgreSQL<sup>\u00ae<\/sup> 9.3 wurde die API f\u00fcr <a title=\"Foreign Data Wrapper\" href=\"http:\/\/www.postgresql.org\/docs\/9.3\/static\/sql-createforeigndatawrapper.html\" target=\"_blank\" rel=\"noopener noreferrer\">Foreign Data Wrapper <\/a>(FDW) f\u00fcr DML-Kommandos erweitert. Dies erm\u00f6glicht die Implementierung von aktualisierbaren FDW-Modulen. Gleichzeitig wurde der Foreign Data Wrapper f\u00fcr PostgreSQL<sup>\u00ae<\/sup> (postgres_fdw) als Extension integriert. Dies erlaubt nun den transparenten Zugriff auf entfernte PostgreSQL<sup>\u00ae<\/sup>-Instanzen. Tabellen erscheinen dabei in der Datenbank als lokale Tabellen und k\u00f6nnen ohne weiteres zum Beispiel in komplexen SQL-Konstrukten wie JOINs oder Views verwendet werden. FDW werden in einem sp\u00e4teren Artikel an dieser Stelle noch ausf\u00fchrlicher erl\u00e4utert.<\/p>\n<h2>Event Trigger<\/h2>\n<p>Ein schon l\u00e4nger von Anwendern gew\u00fcnschtes Feature sind <a title=\"Event Trigger\" href=\"http:\/\/www.postgresql.org\/docs\/9.3\/static\/event-triggers.html\" target=\"_blank\" rel=\"noopener noreferrer\">Event Trigger<\/a> f\u00fcr DDL (Data Definition Language) Operationen, wie beispielsweise ALTER TABLE oder CREATE TABLE. Dies erm\u00f6glicht das automatische Reagieren auf bestimmte Ereignisse per DDL, wie beispielsweise bestimmte Aktionen zu protokollieren. Unterst\u00fctzt werden im Moment Aktionen f\u00fcr\u00a0<em>ddl_command_start<\/em>, <em>sql_drop<\/em>\u00a0und<em> ddl_command_end<\/em>. Triggerfunktionen k\u00f6nnen mit C oder PL\/PgSQL erstellt werden. Folgendes Beispiel f\u00fcr\u00a0<em>sql_drop<\/em> verhindert beispielsweise das L\u00f6schen von Tabellen:<\/p>\n<div class=\"geshifilter\">\n<pre class=\"postgresql geshifilter-postgresql\">CREATE OR REPLACE FUNCTION del_event_func() RETURNS event_trigger AS $$\r\nDECLARE\r\n        v_item record;\r\nBEGIN\r\n        FOR v_item IN SELECT * FROM pg_event_trigger_dropped_objects()\r\n        LOOP\r\n                RAISE EXCEPTION 'deletion of object %.% forbidden', v_item.schema_name, v_item.object_name;\r\n        END LOOP;\r\nEND;\r\n$$ LANGUAGE plpgsql;\r\n\u00a0\r\nCREATE EVENT TRIGGER delete_table_obj ON sql_drop WHEN tag IN ('drop table') EXECUTE PROCEDURE del_event_func();\r\n\u00a0\r\nDROP TABLE child ;\r\nFEHLER:  deletion of object public.child forbidden<\/pre>\n<\/div>\n<h2>Pr\u00fcfsummen in Tabellen<\/h2>\n<p>Mit PostgreSQL<sup>\u00ae<\/sup> 9.3 gibt es nun die M\u00f6glichkeit, in Umgebungen, in denen die Zuverl\u00e4ssigkeit der verwendeten Speicherl\u00f6sungen nicht garantiert werden kann (beispielsweise bestimmte Cloudumgebungen), den Datenbankcluster mit <a title=\"Pr\u00fcfsummen\" href=\"http:\/\/www.postgresql.org\/docs\/9.3\/static\/app-initdb.html#APP-INITDB-DATA-CHECKSUMS\" target=\"_blank\" rel=\"noopener noreferrer\">Pr\u00fcfsummen <\/a>zu initialisieren. PostgreSQL<sup>\u00ae<\/sup> organisiert Tupel in standardm\u00e4\u00dfig 8KB gro\u00dfen Bl\u00f6cken. Diese bilden die kleinste Einheit, mit der die Datenbank auf dem Speichersystem arbeitet. Pr\u00fcfsummen versehen diese Bl\u00f6cke nun mit zus\u00e4tzlichen Informationen, um Speicherfehler wie korrupte Blockheader oder Tupelheader fr\u00fchzeitig erkennen zu k\u00f6nnen. Pr\u00fcfsummen lassen sich nicht nachtr\u00e4glich aktivieren, sondern erfordern das Initialisieren des physikalischen Datenbankverzeichnisses mit initdb und dem neuen Kommandozeilenparameter &#8211;data-checksums. Dies gilt dann f\u00fcr s\u00e4mtliche Datenbankobjekte wie Tabellen oder Indexe und hat eine Auswirkung auf die Geschwindigkeit.<\/p>\n<h2>Materialized Views<\/h2>\n<p>Die neue PostgreSQL<sup>\u00ae<\/sup> Version 9.3 enth\u00e4lt nun auch eine grundlegende Implementierung f\u00fcr <a title=\"Materialized Views\" href=\"http:\/\/www.postgresql.org\/docs\/9.3\/static\/sql-creatematerializedview.html\" target=\"_blank\" rel=\"noopener noreferrer\">Materialized Views<\/a>. Normale Views in PostgreSQL<sup>\u00ae<\/sup> sind keine materialisierten Objekte im Sinne einer Tabelle. Im \u00fcbertragenen Sinne muss man sich Views als eine Art Makro vorstellen, die PostgreSQL<sup>\u00ae<\/sup>auf die zugrundeliegende View anwendet. So wird ein SELECT * FROM &lt;view&gt; dann zum eigentlichen, beliebig komplexen SELECT umgeschrieben. Dies hat jedoch zur Folge, dass bei gro\u00dfen Datenmengen immer wieder das Ergebnis von neuem geplant, ausgef\u00fchrt und materialisiert werden muss. Mit Materialized Views lassen sich Views erstellen, die die materialisierte Ergebnismenge direkt vorhalten. Die Implementierung in PostgreSQL<sup>\u00ae<\/sup> 9.3 ist jedoch noch sehr generisch. Auch blockiert das \u00a0REFRESH MATERIALIZED VIEW Kommando alle Zugriffe auf den Materialized View.<\/p>\n<p>Dies sind nur einige Beispiele aus der langen Liste von Neuerungen, die in die neue PostgreSQL<sup>\u00ae<\/sup> Version Einzug gehalten haben. Mit JSON, Verbesserungen in Streaming Replication und einigen Verbesserungen in der Konfiguration wie Shared Memory Nutzung sind noch viele andere Neuigkeiten hinzugekommen. Allen, die an detaillierten Ausf\u00fchrungen aller neuen Features interessiert sind, seien die<a title=\"Release Notes\" href=\"http:\/\/www.postgresql.org\/docs\/9.3\/static\/release-9-3.html\" target=\"_blank\" rel=\"noopener noreferrer\"> Release Notes<\/a> ans Herz gelegt. F\u00fcr RedHat, CentOS, Scientific Linux und Fedora liegen RPM Pakete unter <a title=\"PGDG yum Repository\" href=\"http:\/\/yum.postgresql.org\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/yum.postgresql.org<\/a> bereit. F\u00fcr Debian steht das PGAPT Repository zur Verf\u00fcgung. Genaue Instruktionen findet man unter <a title=\"http:\/\/wiki.postgresql.org\/wiki\/Apt\" href=\"http:\/\/wiki.postgresql.org\/wiki\/Apt\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/wiki.postgresql.org\/wiki\/Apt<\/a><\/p>\n<\/div>\n<p>Dieser Artikel wurde urspr\u00fcnglich von Bernd Helmle geschrieben.<\/p>\n<p><strong>Auch lesenswert:<\/strong> <a href=\"https:\/\/www.credativ.de\/blog\/postgresql\/informix-foreign-data-wrapper-fuer-postgresql\">PostgreSQL Foreign Data Wrapper f\u00fcr Informix<\/a><\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>PostgreSQL\u00ae 9.3 ist da! Die neue Hauptversion bringt viele Verbesserungen und neue Funktionen. Dieser Artikel stellt einige der interssanten Neuerungen vor. Verbessertes Locking mit Fremdschl\u00fcsseln Fremdschl\u00fcssel sind unabdingbar f\u00fcr die referentielle Integrit\u00e4t der Daten. Allerdings brachten diese bis einschlie\u00dflich PostgreSQL\u00ae 9.2 auch unter bestimmten Bedingungen Lockingprobleme bei UPDATE auf Spalten mit Fremdschl\u00fcsseln mit sich. Vor [&hellip;]<\/p>\n","protected":false},"author":90,"featured_media":3259,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_improvement_type_select":"improve_an_existing","_thumb_yes_seoaic":false,"_frame_yes_seoaic":false,"seoaic_generate_description":"","seoaic_improve_instructions_prompt":"","seoaic_rollback_content_improvement":"","seoaic_idea_thumbnail_generator":"","thumbnail_generated":false,"thumbnail_generate_prompt":"","seoaic_article_description":"","seoaic_article_subtitles":[],"footnotes":""},"categories":[3],"tags":[],"class_list":["post-9972","post","type-post","status-publish","format-standard","hentry","category-credativ-inside"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL\u00ae 9.3 - credativ\u00ae<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL\u00ae 9.3\" \/>\n<meta property=\"og:description\" content=\"PostgreSQL\u00ae 9.3 ist da! Die neue Hauptversion bringt viele Verbesserungen und neue Funktionen. Dieser Artikel stellt einige der interssanten Neuerungen vor. Verbessertes Locking mit Fremdschl\u00fcsseln Fremdschl\u00fcssel sind unabdingbar f\u00fcr die referentielle Integrit\u00e4t der Daten. Allerdings brachten diese bis einschlie\u00dflich PostgreSQL\u00ae 9.2 auch unter bestimmten Bedingungen Lockingprobleme bei UPDATE auf Spalten mit Fremdschl\u00fcsseln mit sich. Vor [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/\" \/>\n<meta property=\"og:site_name\" content=\"credativ\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/credativDE\/\" \/>\n<meta property=\"article:published_time\" content=\"2013-09-09T08:00:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2019\/07\/Portfolio-Loesungen.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"550\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"credativ Redaktion\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@credativde\" \/>\n<meta name=\"twitter:site\" content=\"@credativde\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"credativ Editorial Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/\"},\"author\":{\"name\":\"credativ Redaktion\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#\\\/schema\\\/person\\\/63430ac9e022ccceba0f8d53ffe6db12\"},\"headline\":\"PostgreSQL\u00ae 9.3\",\"datePublished\":\"2013-09-09T08:00:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/\"},\"wordCount\":923,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/postgresql-services.jpg\",\"articleSection\":[\"credativ\u00ae Inside\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#respond\"]}],\"copyrightYear\":\"2013\",\"copyrightHolder\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/\",\"name\":\"PostgreSQL\u00ae 9.3 - credativ\u00ae\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/postgresql-services.jpg\",\"datePublished\":\"2013-09-09T08:00:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/postgresql-services.jpg\",\"contentUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/postgresql-services.jpg\",\"width\":500,\"height\":300,\"caption\":\"PostgreSQL\u00ae Services\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL\u00ae 9.3\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\",\"name\":\"credativ GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Organization\",\"Place\"],\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\",\"name\":\"credativ\u00ae\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\",\"logo\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#local-main-organization-logo\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#local-main-organization-logo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/credativDE\\\/\",\"https:\\\/\\\/x.com\\\/credativde\",\"https:\\\/\\\/mastodon.social\\\/@credativde\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/credativ-gmbh\",\"https:\\\/\\\/www.instagram.com\\\/credativ\\\/\"],\"description\":\"Die credativ GmbH ist ein f\u00fchrendes, auf Open Source Software spezialisiertes IT-Dienstleistungs- und Beratungsunternehmen. Wir bieten umfassende und professionelle Services, von Beratung und Infrastruktur-Betrieb \u00fcber 24\\\/7 Support bis hin zu individuellen L\u00f6sungen und Schulungen. Unser Fokus liegt auf dem ganzheitlichen Management von gesch\u00e4ftskritischen Open-Source-Systemen, darunter Betriebssysteme (z.B. Linux), Datenbanken (z.B. PostgreSQL), Konfigurationsmanagement (z.B. Ansible, Puppet) und Virtualisierung. Als engagierter Teil der Open-Source-Community unterst\u00fctzen wir unsere Kunden dabei, die Vorteile freier Software sicher, stabil und effizient in ihrer IT-Umgebung zu nutzen.\",\"legalName\":\"credativ GmbH\",\"foundingDate\":\"2025-03-01\",\"duns\":\"316387060\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"},\"address\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#local-main-place-address\"},\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":\"51.1732374\",\"longitude\":\"6.392010099999999\"},\"telephone\":[\"+4921619174200\",\"08002733284\"],\"contactPoint\":{\"@type\":\"ContactPoint\",\"telephone\":\"08002733284\",\"email\":\"vertrieb@credativ.de\"},\"openingHoursSpecification\":[{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\"opens\":\"09:00\",\"closes\":\"17:00\"},{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Saturday\",\"Sunday\"],\"opens\":\"00:00\",\"closes\":\"00:00\"}],\"email\":\"info@credativ.de\",\"areaServed\":\"D-A-CH\",\"vatID\":\"DE452151696\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#\\\/schema\\\/person\\\/63430ac9e022ccceba0f8d53ffe6db12\",\"name\":\"credativ Redaktion\",\"description\":\"Dieser Account dient als Sammelpunkt f\u00fcr die wertvollen Beitr\u00e4ge ehemaliger Mitarbeiter von credativ. Wir bedanken uns f\u00fcr ihre gro\u00dfartigen Inhalte, die das technische Wissen in unserem Blog \u00fcber die Jahre hinweg bereichert haben. Ihre Artikel bleiben hier weiterhin f\u00fcr unsere Leser zug\u00e4nglich.\"},{\"@type\":\"PostalAddress\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#local-main-place-address\",\"streetAddress\":\"Hennes-Weisweiler-Allee 23\",\"addressLocality\":\"M\u00f6nchengladbach\",\"postalCode\":\"41179\",\"addressRegion\":\"Deutschland\",\"addressCountry\":\"DE\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/postgresql-9-3\\\/#local-main-organization-logo\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/credativ-logo-right.svg\",\"contentUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/credativ-logo-right.svg\",\"caption\":\"credativ\u00ae\"}]}<\/script>\n<meta name=\"geo.placename\" content=\"M\u00f6nchengladbach\" \/>\n<meta name=\"geo.position\" content=\"51.1732374;6.392010099999999\" \/>\n<meta name=\"geo.region\" content=\"Germany\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL\u00ae 9.3 - credativ\u00ae","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL\u00ae 9.3","og_description":"PostgreSQL\u00ae 9.3 ist da! Die neue Hauptversion bringt viele Verbesserungen und neue Funktionen. Dieser Artikel stellt einige der interssanten Neuerungen vor. Verbessertes Locking mit Fremdschl\u00fcsseln Fremdschl\u00fcssel sind unabdingbar f\u00fcr die referentielle Integrit\u00e4t der Daten. Allerdings brachten diese bis einschlie\u00dflich PostgreSQL\u00ae 9.2 auch unter bestimmten Bedingungen Lockingprobleme bei UPDATE auf Spalten mit Fremdschl\u00fcsseln mit sich. Vor [&hellip;]","og_url":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/","og_site_name":"credativ\u00ae","article_publisher":"https:\/\/www.facebook.com\/credativDE\/","article_published_time":"2013-09-09T08:00:04+00:00","og_image":[{"width":800,"height":550,"url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2019\/07\/Portfolio-Loesungen.jpg","type":"image\/jpeg"}],"author":"credativ Redaktion","twitter_card":"summary_large_image","twitter_creator":"@credativde","twitter_site":"@credativde","twitter_misc":{"Written by":"credativ Editorial Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#article","isPartOf":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/"},"author":{"name":"credativ Redaktion","@id":"https:\/\/www.credativ.de\/en\/#\/schema\/person\/63430ac9e022ccceba0f8d53ffe6db12"},"headline":"PostgreSQL\u00ae 9.3","datePublished":"2013-09-09T08:00:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/"},"wordCount":923,"commentCount":0,"publisher":{"@id":"https:\/\/www.credativ.de\/en\/#organization"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2019\/07\/postgresql-services.jpg","articleSection":["credativ\u00ae Inside"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#respond"]}],"copyrightYear":"2013","copyrightHolder":{"@id":"https:\/\/www.credativ.de\/#organization"}},{"@type":"WebPage","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/","url":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/","name":"PostgreSQL\u00ae 9.3 - credativ\u00ae","isPartOf":{"@id":"https:\/\/www.credativ.de\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#primaryimage"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2019\/07\/postgresql-services.jpg","datePublished":"2013-09-09T08:00:04+00:00","breadcrumb":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#primaryimage","url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2019\/07\/postgresql-services.jpg","contentUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2019\/07\/postgresql-services.jpg","width":500,"height":300,"caption":"PostgreSQL\u00ae Services"},{"@type":"BreadcrumbList","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.credativ.de\/en\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL\u00ae 9.3"}]},{"@type":"WebSite","@id":"https:\/\/www.credativ.de\/en\/#website","url":"https:\/\/www.credativ.de\/en\/","name":"credativ GmbH","description":"","publisher":{"@id":"https:\/\/www.credativ.de\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.credativ.de\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Organization","Place"],"@id":"https:\/\/www.credativ.de\/en\/#organization","name":"credativ\u00ae","url":"https:\/\/www.credativ.de\/en\/","logo":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#local-main-organization-logo"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#local-main-organization-logo"},"sameAs":["https:\/\/www.facebook.com\/credativDE\/","https:\/\/x.com\/credativde","https:\/\/mastodon.social\/@credativde","https:\/\/www.linkedin.com\/company\/credativ-gmbh","https:\/\/www.instagram.com\/credativ\/"],"description":"Die credativ GmbH ist ein f\u00fchrendes, auf Open Source Software spezialisiertes IT-Dienstleistungs- und Beratungsunternehmen. Wir bieten umfassende und professionelle Services, von Beratung und Infrastruktur-Betrieb \u00fcber 24\/7 Support bis hin zu individuellen L\u00f6sungen und Schulungen. Unser Fokus liegt auf dem ganzheitlichen Management von gesch\u00e4ftskritischen Open-Source-Systemen, darunter Betriebssysteme (z.B. Linux), Datenbanken (z.B. PostgreSQL), Konfigurationsmanagement (z.B. Ansible, Puppet) und Virtualisierung. Als engagierter Teil der Open-Source-Community unterst\u00fctzen wir unsere Kunden dabei, die Vorteile freier Software sicher, stabil und effizient in ihrer IT-Umgebung zu nutzen.","legalName":"credativ GmbH","foundingDate":"2025-03-01","duns":"316387060","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"},"address":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#local-main-place-address"},"geo":{"@type":"GeoCoordinates","latitude":"51.1732374","longitude":"6.392010099999999"},"telephone":["+4921619174200","08002733284"],"contactPoint":{"@type":"ContactPoint","telephone":"08002733284","email":"vertrieb@credativ.de"},"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens":"09:00","closes":"17:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":["Saturday","Sunday"],"opens":"00:00","closes":"00:00"}],"email":"info@credativ.de","areaServed":"D-A-CH","vatID":"DE452151696"},{"@type":"Person","@id":"https:\/\/www.credativ.de\/en\/#\/schema\/person\/63430ac9e022ccceba0f8d53ffe6db12","name":"credativ Redaktion","description":"Dieser Account dient als Sammelpunkt f\u00fcr die wertvollen Beitr\u00e4ge ehemaliger Mitarbeiter von credativ. Wir bedanken uns f\u00fcr ihre gro\u00dfartigen Inhalte, die das technische Wissen in unserem Blog \u00fcber die Jahre hinweg bereichert haben. Ihre Artikel bleiben hier weiterhin f\u00fcr unsere Leser zug\u00e4nglich."},{"@type":"PostalAddress","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#local-main-place-address","streetAddress":"Hennes-Weisweiler-Allee 23","addressLocality":"M\u00f6nchengladbach","postalCode":"41179","addressRegion":"Deutschland","addressCountry":"DE"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/postgresql-9-3\/#local-main-organization-logo","url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/04\/credativ-logo-right.svg","contentUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/04\/credativ-logo-right.svg","caption":"credativ\u00ae"}]},"geo.placename":"M\u00f6nchengladbach","geo.position":{"lat":"51.1732374","long":"6.392010099999999"},"geo.region":"Germany"},"_links":{"self":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/9972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/users\/90"}],"replies":[{"embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/comments?post=9972"}],"version-history":[{"count":1,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/9972\/revisions"}],"predecessor-version":[{"id":9973,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/9972\/revisions\/9973"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/media\/3259"}],"wp:attachment":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/media?parent=9972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/categories?post=9972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/tags?post=9972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}