Controlling Autovacuum


Unlike other database systems, Postgres makes the cleanup process visible and tunable to users....

Be Prepared for Prepare


Prepared statements are queries where the constants used in the query are separated from the query text. While this improves security by...

Postgres Rising in Russia


I just returned from two weeks in Russia, and I am happy to report that Postgres is experiencing strong growth there. I have regularly complained that Russian Postgres adoption...

2015 Postgres Conferences


Due to the increased popularity of Postgres, conference organizers are more confident about future conferences and are announcing their conference dates earlier, perhaps also to attract speakers. These are the conferences already announced for 2015:

  • February,
  • ...

Postgres Pool Party


If you are near Philadelphia, you are invited to attend the 2014 Postgres Pool Party at my home:

  • When: Saturday, July 26, 2pm to 7pm
  • Where: my home in Newtown Square, Pennsylvania (
  • ...

Community Query: DML Change Tracking with PostgreSQL


EnterpriseDB decided to put me on the spot recently by inviting queries from the community via social channels as I prepared for teaching a new PostgreSQL course. It’s a familiar spot for me. I regularly field questions about PostgreSQL given my role in the community and I was happy to get a...

Dynamic Columns


Sql has never been good at handling dynamic columns — it can easily process tables with a fixed number of columns, but dynamic column handling has always been a challenge. (Dynamic columns are often used to implement user-defined fields.) One...

Creating Virtual Columns


Databases store data in table columns, but sometimes it is useful to create non-storage columns for code clarity. For example, you might need to access a combination of columns frequently and don't want to repeatedly perform the combining operation in your application. In this case, a column can...

Monitoring Postgres from the Command Line


You might already be aware that Postgres updates the process title of all its running processes. For example, this is a Debian Linux ps display for an idle Postgres server:



postgres  2544  2543  0 10:47 ?        00:00:00 /u/pgsql/bin/

What Are Oids

Object Identifiers (oids) were added to Postgres as a way to uniquely identify database objects, e.g. rows, tables, functions, etc. It is part of Postgres's...

Cluster, Cluster, Schema, Schema


There are 500k to 1-million words in the English language, so you would think that Postgres would be able to find a unique word for every aspect of the database,...

Virtualizing Postgres


Postgres is an ideal database to run in a virtual environment or public/private cloud — one reason is that Postgres relies heavily on the operating system, rather than using features like raw devices. Second, its license is obviously very flexible for virtual deployments.

I am often asked...

What Is a GUC Variable?


Thursday, December 1, 2011

You might have heard the term "GUC" before, especially on the Postgres email lists. It is documented as an acronym meaning "Grand...