<?xml version='1.0' encoding='utf-8'?>
<schedule><version>Firefly</version><conference><title>PGConf.DE 2023</title><start>2023-06-27</start><end>2023-06-27</end><days>1</days><baseurl>https://www.postgresql.eu/events/pgconfde2023/schedule/</baseurl></conference><day date="2023-06-27"><room name="Other"><event id="4636"><start>08:00</start><duration>01:00</duration><room>Other</room><title>Registration</title><abstract /><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4636/</url><track>Breaks</track><persons /></event></room><room name="Saal A1"><event id="4657"><start>09:00</start><duration>00:10</duration><room>Saal A1</room><title>Opening</title><abstract /><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4657/</url><track>Breaks</track><persons><person id="30">Andreas Scherbaum</person><person id="386">Daniel Westermann</person></persons></event></room><room name="Saal B"><event id="4401"><start>09:10</start><duration>00:45</duration><room>Saal B</room><title>pg_hint_plan – get the right plan without surprises</title><abstract>I use pg_hint_plan to learn about the optimizer, to understand the query planner choices, and, sometimes work around a problem in production. But hinting is not easy. Fixing the exact plan needs more than one hint. In this live demo session, we will go through understanding and examples of how to use pg_hint_plan in a predictable way. It is also a good occasion to understand the access paths, join order and methods, and how to read an execution plan</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4401/</url><track>Talks - English</track><persons><person id="618">Franck Pachot</person></persons></event></room><room name="Saal A2"><event id="4534"><start>09:10</start><duration>00:45</duration><room>Saal A2</room><title>Performance Tricks, die man noch nie gesehen hat</title><abstract>Performance ist ein wichtiges Thema, das bei den meisten Usern ganz oben auf der Agenda steht. 
Im Rahmen dieses Vortrags wollen wir uns einige der weniger bekannten aber hoch effektiven Performance Tips vorgestellt werden. Von Storage bis hin zu Query Tuning.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4534/</url><track>Talks - Deutsch</track><persons><person id="39">Hans-Jürgen Schönig</person></persons></event></room><room name="Saal A1"><event id="4497"><start>09:10</start><duration>00:45</duration><room>Saal A1</room><title>Don't Do This</title><abstract>Based on the legendary "Don't Do This" PostgreSQL wiki page, this talk explores some of the common pitfalls and misconceptions that Postgres users can face - and shows possible ways to undo them or workarounds.

Some of the things discussed:

- Bad SQL habits
- Correct types for data storage
- (Sub-)Partitioning (and how to get it wrong)
- Table inheritance (and how to undo it)
- Connections (number of, and properly handling)
- Security issues (unsafe configurations and usage)</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4497/</url><track>Talks - English</track><persons><person id="323">Jimmy Angelakos</person></persons></event></room><room name="Other"><event id="4637"><start>09:55</start><duration>00:30</duration><room>Other</room><title>Breakfast</title><abstract /><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4637/</url><track>Breaks</track><persons /></event></room><room name="Saal B"><event id="4547"><start>10:25</start><duration>00:45</duration><room>Saal B</room><title>Everything Everywhere All at Once: PostgreSQL configuration guide</title><abstract>Configuring a database is always a challenge, because it requires knowledge of
the database itself and the load one expects it to handle. There is
surprisingly a lot of various trades-off, some of which have to be established
empirically.

In this talk we will try to take a step back and look at this from a different
angle. Could we divide all the possible ways of configuring Postgres into
separate categories? What would be their properties, and how does it affect the
final challenge, is it going to be easier to configure a database? How
the database developers point of view impacts this question?</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4547/</url><track>Talks - English</track><persons><person id="319">Dmitry Dolgov</person></persons></event></room><room name="Saal A2"><event id="4586"><start>10:25</start><duration>00:45</duration><room>Saal A2</room><title>Was hält uns auf?</title><abstract>Warum ist die Query "manchmal" langsam? Warum fällt die Replikation zurück? Welche Operation braucht soviel CPU-Zeit? Was ist unser Bottleneck?
Wir schauen uns an, wie moderne Betriebssysteme und dynamisches Tracing bei der Analyse von Performanceproblemen helfen können.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4586/</url><track>Talks - Deutsch</track><persons><person id="214">Christoph Moench-Tegeder</person></persons></event></room><room name="360° Nord"><event id="4622"><start>10:25</start><duration>00:45</duration><room>360° Nord</room><title>Escaping a public cloud using PostgreSQL logical replication with minimal downtime</title><abstract>This is the story of a real customer case: Because it was easy to setup, no real DBAs have been around and costs seemed to be fine, a managed PostgreSQL service in a public cloud was chosen to start the project with. A few years later the production database was at 8TB in size and costs increased significantly every month. Exploring the options was one part of the project. Choosing the best of them came after and then troubles started because we hit all kinds of limitations of a public cloud. Logical replication finally was the solution, and this is what this talk is about.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4622/</url><track>Sponsors</track><persons><person id="386">Daniel Westermann</person></persons></event></room><room name="Saal A1"><event id="4530"><start>10:25</start><duration>00:45</duration><room>Saal A1</room><title>Highly available Postgres databases in Kubernetes</title><abstract>Postgres is rapidly gaining traction in Kubernetes, alongside the applications it empowers. This presents both the same challenges and opportunities we face in traditional environments, but new ones. If handled well, these all offer organizations a chance to thrive in our highly innovative world.

In this presentation I’ll share my experience with Postgres in both the traditional and cloud native worlds, and will use the CloudNativePG open source operator to demonstrate how you can achieve business continuity of Postgres databases in Kubernetes from day 0 (planning) to day 2 (production) operations.

After providing an overview of the full open source stack made up by Kubernetes, Postgres and CloudNativePG, I will go over the most common architectures in private, public, hybrid and multi-cloud environments, including recommendations for your business. I’ll then showcase the most relevant capabilities of Postgres in Kubernetes such as failover, switchover, continuous backup, point in time recovery, export of metrics, logging, auditing, security and more — all of which are reshaping and elevating the role of a DBA in organizations like yours.

As a maintainer of the CloudNativePG project, I’ll also share a peek into the future of the  CloudNativePG open source operator.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4530/</url><track>Talks - English</track><persons><person id="4">Gabriele Bartolini</person></persons></event></room><room name="Saal A2"><event id="4447"><start>11:20</start><duration>00:45</duration><room>Saal A2</room><title>Nachhaltiges Datenbank Performance Profiling in PostgreSQL</title><abstract>Die nachhaltige Sammlung von Performance-Daten von Datenbanksystemen für
flexible und umfangreiche Auswertungen durch Snapshots und Reports sind bei kommerziellen Datenbank-Herstellern
essentiell und bei DBAs ein beliebtes Feature.

Auch für PostgreSQL gibt es mit der Erweiterung PG_PROFILE eine geeignete Lösung dazu.

Dieser Vortrag beschreibt die Vorraussetzungen und das grundlegende Setup von PG_PROFILE
und zeigt anhand von Beispielen und Praxis-Erfahrungen, wie man hiermit bei Performance
Analysen vorgehen kann.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4447/</url><track>Talks - Deutsch</track><persons><person id="718">Dirk Krautschick</person></persons></event></room><room name="Saal B"><event id="4525"><start>11:20</start><duration>00:45</duration><room>Saal B</room><title>An ultimate guide to upgrading your PostgreSQL installation</title><abstract>Even an experienced PostgreSQL DBA can not always say that upgrading
between major versions of Postgres is an easy task, especially if
there are some special requirements, such as downtime limitations or
if something goes wrong. For less experienced DBAs anything more
complex than dump/restore can be frustrating.

In this talk I will describe why we need a special procedure to
upgrade between major versions, how that can be achieved and what sort
of problems can occur. I will review all possible ways to upgrade your
cluster from classical pg_upgrade to old-school slony or modern
methods like logical replication. For all approaches, I will give a
brief explanation how it works (limited by the scope of this talk of
course), examples how to perform upgrade and some advice on
potentially problematic steps. Besides I will touch upon such topics
as integration of upgrade tools and procedures with other software —
connection brokers, operating system package managers, automation
tools, etc. This talk would not be complete if I do not cover cases
when something goes wrong and how to deal with such cases.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4525/</url><track>Talks - English</track><persons><person id="88">Ilya Kosmodemiansky</person></persons></event></room><room name="360° Nord"><event id="4621"><start>11:20</start><duration>00:45</duration><room>360° Nord</room><title>Best of PostgreSQL support cases</title><abstract>In twenty years of giving PostgreSQL database support, we’ve collected some pretty good support stories.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4621/</url><track>Sponsors</track><persons><person id="39">Hans-Jürgen Schönig</person></persons></event></room><room name="Saal A1"><event id="4533"><start>11:20</start><duration>00:45</duration><room>Saal A1</room><title>High Availability with PostgreSQL, both old and new</title><abstract>This presentation discusses what is High Availability, and why one needs it.
We will then examine more closely some of the features which are relevant for HA and more generally for achieving a given RPO and RTO, through a worked example of the life cycle of a transaction from the viewpoint of its durability.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4533/</url><track>Talks - English</track><persons><person id="34">Gianni Ciolli</person></persons></event></room><room name="Other"><event id="4638"><start>12:05</start><duration>00:50</duration><room>Other</room><title>Lunch</title><abstract /><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4638/</url><track>Breaks</track><persons /></event></room><room name="360° Nord"><event id="4623"><start>12:50</start><duration>00:45</duration><room>360° Nord</room><title>Unlock The Power of Postgres: Every Datatype, Every Cloud, Everywhere</title><abstract>Combined, Postgres is the most loved, most used, and most wanted database in the world. To allow developers to build better applications with greater agility and flexibility, database strategies must be modernised to adapt more readily to business demands. Making Postgres ready for enterprise level applications with extreme high availability and scalability is central and can be delivered through a variety of managed services that help reduce complexity, ensure Oracle compatibility, and increase overall performance.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4623/</url><track>Sponsors</track><persons><person id="392">Jan Karremans</person></persons></event></room><room name="Saal A1"><event id="4423"><start>12:50</start><duration>00:45</duration><room>Saal A1</room><title>PG HA – Cluster your application in 40 minutes</title><abstract>PostgreSQL has been one of the most popular open source databases for several years now and thus plays an important role for more and more applications.
A side effect of open source databases has been that they are ‘simply installed’ in many situations. Similar to MySQL, this often happens, for example, when setting up online shops, CMS systems or a domain of one’s own.
It is not uncommon for this database to grow historically and thus become critical to the company. So what happens if such a database suddenly becomes unavailable?
PostgreSQL provides several solutions for this problem, which we will outline in this lecture.
I would like to describe a classic web application setup and show you how to add some high availability to the application by setting up a high available PostgreSQL cluster together with the lightway connection pooler PgBouncer. An to make clear that it’s not so complex as you may think, I will do this live within 40 minutes.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4423/</url><track>Talks - English</track><persons><person id="907">Raphael Salguero</person></persons></event></room><room name="Saal A2"><event id="4583"><start>12:50</start><duration>00:45</duration><room>Saal A2</room><title>Sicherer PostgreSQL-Betrieb - Nach BSI-Grundschutz</title><abstract>BSI-Grundschutz ist ein Leitfaden für den sicheren Betrieb von IT Systemen, welcher auch einen Baustein für Datenbanken umfasst. Auf der einen Seite wird BSI-Grundschutz sowohl bei der Einführung als auch bei der täglichen Umsetzung oft als unliebsamer administrativen Overhead wahrgenommen. Auf der anderen Seite erlaubt eine Umsetzung mit Augenmaß aber eine deutliche Verbesserung der Sicherheit und der Arbeitsabläufe.

Wir haben über die Jahre mehrere unserer Kunden bei der Umsetzung von BSI-Maßnahmen begleitet und dabei die offenen Punkte identifiziert und Ratschläge für mögliche Umsetzungen gegeben. Dieser Vortrag stellt die nötigen Maßnahmen vor, um eine Standard-Installation von PostgreSQL so zu härten, dass sie nach BSI-Grundschutz betrieben werden kann. Außerdem werden Best-Practies sonstiger für den sicheren Betrieb benötigter Konzepte wie Patch-Management, Backup (inkl. Restore-Tests) und Monitoring diskutiert.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4583/</url><track>Talks - Deutsch</track><persons><person id="301">Michael Banck</person></persons></event></room><room name="Saal B"><event id="4458"><start>12:50</start><duration>00:45</duration><room>Saal B</room><title>Mastering Large-Scale Databases with Postgres</title><abstract>In today's world, the amount of data being generated is increasing at an
unprecedented rate, leading to the need for efficient management of huge
databases. But what do we mean by huge databases? Typically, these are databases
that contain millions or even billions of records and require complex querying
and processing. Managing such databases can be a challenging task, as they often
face common problems such as slow query performance, backup challenges,
and difficulty in scaling.

This talk aims to provide practical solutions for managing huge databases using
Postgres, one of the most popular open-source relational database management
systems. We'll discuss what a huge database means in today's world and how we
can manage them depending on the kind of challenges we encounter.

By the end of the talk, attendees will have a better understanding of the common
problems faced in managing huge databases and will have the tools and techniques
needed to effectively manage their own large-scale databases with Postgres.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4458/</url><track>Talks - English</track><persons><person id="387">Lætitia AVROT</person></persons></event></room><room name="Saal A1"><event id="4584"><start>13:45</start><duration>00:45</duration><room>Saal A1</room><title>Patroni 3.0: What's New and Future Plans</title><abstract>Patoni is one of the most popular and advanced solutions for PostgreSQL high-availability. It works together with Etcd, Zookeeper, Consul or Kubernetes API to store and retrieve PostgreSQL cluster information in a consistent way ensuring that there is only one leader at a time. Unlike the majority of existing solutions for automatic failover, Patroni requires a minimal effort to configure the HA cluster and supports autodiscovery of new nodes.

In this talk I will do a short introduction to the ideas behind Patroni, deep dive into the new features that we have released in the last few years, cover some interesting bugs and failure scenarios which were fixed, and share some plans for future development. Of course, the talk will not be complete without showing a live demo of some brand-new features.

Patroni is a Python open-source project developed on GitHub: https://github.com/zalando/patroni and being used by a lot of small and big companies around the globe.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4584/</url><track>Talks - English</track><persons><person id="359">Alexander Kukushkin</person></persons></event></room><room name="Saal B"><event id="4549"><start>13:45</start><duration>00:45</duration><room>Saal B</room><title>3 practical strategies to transform PROD data into DEV data</title><abstract>It's very scary and sketchy to develop on the production database, so a development database is required.
What should we put in it? Synthetic (fake) data is the easiest solution, but can be impossible to make realistic enough, and some bugs would be hard to reproduce quickly.
Putting real production data is as realistic as it gets, but comes with big security and performance issues.
What if we could put production data, but anonymize / obfuscate it enough it a nice way, so it's safe to use?
In this practical presentation, I'll share the 3 strategies we have used at Centaur to extract production data to fabricate our development databases, and the various obfuscation methods we used to keep everything safe but still helpful for developers.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4549/</url><track>Talks - English</track><persons><person id="930">Remi Cura</person></persons></event></room><room name="Saal A2"><event id="4441"><start>13:45</start><duration>00:45</duration><room>Saal A2</room><title>Wie erzeuge ich Datenkorruption (und wie repariere ich sie wieder)</title><abstract>PostgreSQL ist ziemlich "deppensicher" und lässt normalerweise nichts zu, was die Datenbank zerstören kann. Dennoch schaffen es Leute immer wieder.
Im ersten Teil meines Vortrages stelle ich Methoden vor, die Leute (unabsichtlich) gefunden haben, um Datenkorruption zu erzeugen, und die man also am besten vermeidet.
Der zweite Teil des Vortrages gibt Handreichungen, wie man mit Datenkorruption umgehen kann, wenn sie doch einmal passiert.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4441/</url><track>Talks - Deutsch</track><persons><person id="191">Laurenz Albe</person></persons></event><event id="4407"><start>14:40</start><duration>00:45</duration><room>Saal A2</room><title>Deep dive into the pgBackRest world</title><abstract>Have you already installed pgBackRest but are now wondering if you discovered all of its possibilities? This talk will start from a base installation of the tool and then deep dive into its richer features for more expert use.

After a quick reminder of its basic functionalities, we'll go deeper with some less common operations: refresh a standby server, take backups from a standby, and setup asynchronous archiving.
By doing so, we'll have a look at the current implementation of the multi-repositories support.

During this pgBackRest capabilities exploration, we'll also discover the latest features releases, such as TLS server, file bundling and backup annotations.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4407/</url><track>Talks - English</track><persons><person id="440">Stefan Fercot</person></persons></event></room><room name="Saal A1"><event id="4514"><start>14:40</start><duration>00:45</duration><room>Saal A1</room><title>VACUUM:  From your head down to your shoes</title><abstract>VACUUM is an essential part of PostgreSQL. In this talk, I will go through it, starting from basics to the internals. Here is the outline:

MVCC: The basics
Data snapshots
VACUUM
VACUUM processing
FREEZE
VACUUM tuning
VACUUM FULL</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4514/</url><track>Talks - English</track><persons><person id="49">Devrim Gündüz</person></persons></event></room><room name="Saal B"><event id="4569"><start>14:40</start><duration>00:45</duration><room>Saal B</room><title>Diving into most common performance problems in PostgreSQL and how to fix them.</title><abstract>This session will discuss most common problems customers face while working with PostgreSQL database in their production workloads. Example problems like "autovacuum not running" , "bloated indexes", "replica queries getting cancelled", "bad performance immediately after version upgrade" ; this session will cover common problems like these and how to troubleshoot and fix them.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4569/</url><track>Talks - English</track><persons><person id="804">Divya Sharma</person></persons></event></room><room name="Other"><event id="4639"><start>15:25</start><duration>00:30</duration><room>Other</room><title>Coffee break</title><abstract /><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4639/</url><track>Breaks</track><persons /></event></room><room name="Saal A2"><event id="4484"><start>15:55</start><duration>00:50</duration><room>Saal A2</room><title>LFMF: how a CREATE INDEX CONCURRENTLY led to a 6 hour downtime</title><abstract>*War story time!*

My client - who prefers to remain unnamed - introduced a new table with an ON DELETE CASCADE foreign key. Which wasn't backed by an appropriate index.
Creating that missing index (and a couple of bad decisions, some of them many years in the past) led to a downtime of about six (!) hours.

The talk

* describes* what happened

* then *explains* what happened and

* shows which decisions - by the client, the DBA (me), but also the PostgreSQL developers TBH - caused the catastrophic course of events


Obviously, we'll also discuss the lessons learned and which measures were taken to prevent a reoccurence.

This completely took me by surprise (and what an unpleasant one!), so:

*Learn from my fail!*</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4484/</url><track>Talks - English</track><persons><person id="195">Gunnar "Nick" Bluth</person></persons></event></room><room name="Saal A1"><event id="4576"><start>15:55</start><duration>00:50</duration><room>Saal A1</room><title>Bulk Inserts With PostgreSQL: Four Methods For Efficient Data Loading</title><abstract>In a world where data continues to grow at an overwhelming rate, knowing how to load and insert data into PostgreSQL as efficiently as possible is a key skill for any software or data engineer. Whether loading data from files, manually generating multi-valued INSERT or UPSERT statements, or using some of the more popular language SDKs, knowing which option is right for each situation can sometimes be difficult to figure out.

This talk will review how to efficiently insert large amounts of data into PostgreSQL using freely available tools and well-crafted SQL. We'll demonstrate the usage of tools like COPY, how to batch data using multi-valued INSERT statements, functions to look for in language SDKs, and even demonstrate how to use array parameters to speed up multi-valued inserts.

By the end of this session, you will know at least four ways to insert bulk data, the impact it will have on your PostgreSQL database, and options for improving your current application code to perform at its best!</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4576/</url><track>Talks - English</track><persons><person id="810">Ryan Booz</person></persons></event></room><room name="Saal B"><event id="4551"><start>15:55</start><duration>00:50</duration><room>Saal B</room><title>PostgreSQL memory usage: where did my memory go?</title><abstract>PostgreSQL relies on the Operating System for memory management. The database performance and response time depends on memory availability, so PostgreSQL requests and releases memory at runtime. But when PostgreSQL deallocates memory, the OS might not do what the database asks for.

This session is a deep dive into the OS and PostgreSQL memory usage principles that will help you master the understanding of how this resource is actually used and managed. You’ll learn how and why memory oversubscription impacts database response time. You’ll see how memory usage gets exaggerated with a growing number of application connections. Lastly, you’ll discover that the OS doesn’t deallocate memory at all times…even when PostgreSQL explicitly asks to take the memory back.</abstract><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/4551/</url><track>Talks - English</track><persons><person id="738">Frits Hoogland</person></persons></event></room><room name="Saal A1"><event id="5522"><start>16:45</start><duration>00:15</duration><room>Saal A1</room><title>Closing</title><abstract /><url>https://www.postgresql.eu/events/pgconfde2023/schedule/session/5522/</url><track>Breaks</track><persons><person id="30">Andreas Scherbaum</person></persons></event></room></day></schedule>