PostgreSQL Partition Check Script

New year is coming, if you want to check date based partitions in PostgreSQL , you may use the following query:

The query may look too complex to get such a simple information, but unfortunately PostgreSQL’s partitioning system is not much different than “Oracle version 7 style” manual partitioning. As you may see, I use pg_inherits table to connect parent table and child tables (partitions), and query the pg_constraint table to get the check constraints. Then there comes the magical, regular expression command to filter the date values from the constraints to find the high values of the partitions.

Important: It only works if you defined the partition constraints in the following format:

When you run the query, you get something like this:

postgrespart

I hope it helps.

Please share
  • 3
  •  
  •  
  •  
  •  
  •  
  •  

Gokhan Atil is a database administrator who has hands-on experience with both RDBMS and noSQL databases, and strong background on software development. He is certified as Oracle Certified Professional (OCP) and is awarded as Oracle ACE (in 2011) and Oracle ACE Director (in 2016) for his continuous contributions to the Oracle users community.

6 Comments

  1. mehmet sülün

    Gökhan hocam Production olarak postgresql çalıştığınız bir db  var mı acaba ?

    biz  yeni  müşterilerimiz için postgresql  geçişini düşünüyoruz   ama  bazı çekincelerimiz var  bu konuda tecrübe ittğiniz canlı sistem hakkında olumlu olumsuz fikirlerinizi  almak isterim sizin için uygunsa

    • Gokhan Atil

      Evet bizde production’da PostgreSQL var. PostgreSQL geçişiyle ilgili olarak etraflıca düşünmeni tavsiye ederim. Support hizmeti alınca, Oracle Standard Edition maliyetlerine hemen hemen denk gelecektir. Uzman olmadığın bir veritabanı ile uğraşacak olman da düşünülmesi gereken önemli bir nokta. Projeniz için tüm gereklilikleri iyi düşünerek hareket ediyorsan sorun yok, ama ucuzmuş (hayalperestler için bedavaymış) ve Oracle uyumluymuş mantığı ile yola çıkarsan hüsrana uğrarsın.

  2. mehmet sülün

    evet  fiyat aldık çok yüksek çıktı.

    test ettik uygulamalarımızı kritik bir sorun ile karşılaşmadık ama yinede canlı örnekleri merak ediyoruz.

    dba olarak yönetimi benim fikrim zor olmamakla farklı bir tarz gerektiriyor

    oracle gibi düşünüp hareket edemiyorsun tabi alışmak biraz zaman isteyecek.

  3. mehmet sülün

    merhaba  gökhan Hocam,

    postgresql   partition da  master  tablo partition yapıldı diyelim.

    aylık child tablolara  böldük

    uygulama  tarafında   tüm datayı  sorgulamamız gerektiği durumda ben yine  master  tabloya  sorgu atıyor  olacam değilmi ?

    sorgularda aylık (child) tablolarımı işin içine dahil ettirmem gerekiyormu ?

    oracledaki  gibi partition arka planda çalışıyordur umarım.

    • Gokhan Atil

      Merhaba Mehmet

      Evet sorgularda master tabloya sorgu atıyorsun yani aynı Oracle’daki gibi sorgu yazacaksın, PostgreSQL arka planda gerekli partitionlardan veriyi çeker. Oracle’dan farklı olan kısım, master tabloya index eklemek istersen partitionlara da eklemen gerekli.

  4. mehmet sülün

    süper  pg de  bu noktada  tıkanırız  diye çok korkuyordum.

    kıymetli  bir  bilgi  benim için varolasın Hocam.

Leave Comment

Your email address will not be published. Required fields are marked *