PostgreSQL Sistem Tabloları ve Katalog Şeması (pg_catalog) Nedir?

Herkese merhabalar 👋 Bu yazımızda PostgreSQL’in kullandığı kendine özel sistem tabloları, katalog şeması (pg_catalog) ve sistem fonksiyonları hakkında detaylı bilgi vereceğiz.

PostgreSQL, veritabanı yapısını ve meta verileri yönetmek için güçlü bir veri sözlüğü (data dictionary) yapısı sunar. Bu yapı; katalog şeması, sistem bilgi tabloları ve sistem fonksiyonlarından oluşur.

PostgreSQL Veri Sözlüğü Nedir?

PostgreSQL veri sözlüğü; veritabanının kendisine ait meta verileri saklayan, sistem seviyesindeki tabloları ve fonksiyonları içeren yapıdır. Yani veritabanı içerisindeki:

  • Tablolar
  • İndeksler
  • Şemalar
  • Roller
  • Yetkiler
  • Veritabanları

gibi pek çok bileşen hakkında bilgi, bu veri sözlüğü üzerinden yönetilir.

Katalog Şeması (pg_catalog) Nedir?

Katalog şeması (pg_catalog), veritabanına ilişkin meta verileri saklayan sistem kataloglarını barındıran şemadır. PostgreSQL’in iç dünyasını anlamak ve sistem seviyesinde analiz yapmak için en önemli şemalardan biridir.

  • Çoğu sistem kataloğu, veritabanı yaratılırken template veritabanından kopyalanır.
  • pg_catalog şeması sadece katalog tablolarını değil, çeşitli view ve fonksiyonları da barındırır.

pg_catalog Şemasındaki Tablo ve Fonksiyonlarla Neler Yapılabilir?

  • psql içerisinde \dS komutu ile sistem kataloğundaki tablo ve view’ler listelenebilir.
  • \dS komutu ile listelenen sistem nesneleri, pg_catalog şeması altında yer alır.
  • Sistem katalogları aslında sıradan tablolar gibidir; ancak içerdikleri verilere özel durumlar dışında doğrudan müdahale edilmez, SQL komutları ile yönetilir.

Önemli PostgreSQL Sistem Tabloları

PostgreSQL sistem tabloları, veritabanı yapısı ve çalışma durumu hakkında detaylı bilgi sunar. En sık kullanılan bazı sistem tabloları şunlardır:

  • pg_class: Tablo, indeks, view, sequence gibi nesnelere ait bilgileri içerir.
  • pg_database: Cluster içerisindeki veritabanları ile ilgili bilgileri içerir.
  • pg_inherits: Tablolar arasındaki kalıtım (inheritance) ilişkisine ait bilgileri tutar.
  • pg_index: İndekslere ilişkin tüm bilgileri içerir.
  • pg_stat_activity: PostgreSQL sunucu süreçlerine ve aktif oturumlara ait bilgileri içerir.
  • pg_depend: Veritabanı nesneleri arasındaki bağımlılık ilişkilerine dair bilgileri içerir.
  • pg_locks: Nesneler üzerinde var olan ve beklemede olan kilitlere ait bilgileri tutar.
  • pg_roles: Cluster üzerindeki rollere ve yetkilerine ilişkin bilgileri içerir.
  • pg_namespace: Şemalara ilişkin tüm bilgileri içerir.
  • pg_extension: Veritabanı üzerinde kurulu eklentilere ait bilgileri içerir.
  • pg_available_extensions: Kurulmaya hazır durumda olan eklentilere ait bilgileri içerir.
  • pg_settings: Cluster’ın çalışma anı parametrelerine (konfigürasyon ayarlarına) ilişkin bilgileri içerir.

Özellikle pg_stat_activity, pg_locks ve pg_settings tabloları, canlı sistemlerde performans analizi ve sorun giderme işlemleri için sıklıkla kullanılır.

Önemli PostgreSQL Sistem Fonksiyonları

PostgreSQL, sistem ve oturum bilgilerini almak için birçok yerleşik fonksiyon sunar. Bunlardan bazıları:

  • current_catalog — Oturumdaki aktif veritabanının adını verir.
  • current_role, current_user — Oturumdaki etkin kullanıcının adını ve yetkilerini verir.
  • session_user — Oturumu başlatan kullanıcının adını verir.
  • pg_backend_pid() — Aktif oturumu barındıran sürecin PID (Process ID) bilgisini döner.
  • version() — PostgreSQL versiyon bilgisini döner.

Bu fonksiyonlar, kimlik bilgisi, oturum takibi ve versiyon kontrolü gibi işlemler için oldukça faydalıdır.

Sistem Yönetimi için Kullanılan PostgreSQL Fonksiyonları

PostgreSQL, sistem yönetimi ve bakım işlemleri için de güçlü fonksiyonlar sunar. Aşağıdaki fonksiyonlar özellikle DBA’ler (Database Administrator) için oldukça değerlidir:

  • pg_cancel_backend(pid) : Belirtilen oturumda çalışmakta olan sorguyu sonlandırır.
  • pg_terminate_backend(pid) : Belirtilen oturuma ait PostgreSQL sürecini tamamen sonlandırır.
  • pg_reload_conf() : Yapılandırma dosyasının (postgresql.conf) yeniden okunmasını sağlar.
  • pg_size_pretty(size) : Boyut bilgisini birim ile birlikte okunabilir biçime dönüştürür (örneğin MB, GB).
  • pg_total_relation_size(regclass) : Tablonun indeksleri ile birlikte diskte toplam kapladığı alanı verir.
  • pg_tablespace_size(tablespace) : Belirli bir tablespace’in diskte kapladığı alanı verir.
  • pg_table_size(regclass) : Bir tablonun diskte kapladığı alan bilgisini verir (indeksler hariç).
  • pg_start_backup(label) : PostgreSQL’i fiziksel yedek almak için hazırlar.
  • pg_stop_backup() : Yedek alma sürecini sonlandırır ve gerekli işlemleri tamamlar.
  • pg_switch_wal() : WAL (Write Ahead Log) dosyasını değiştirmeye zorlar.
  • pg_database_size(datname) : Belirli bir veritabanının diskte kapladığı alan bilgisini verir.
  • pg_indexes_size(regclass) : Bir tablonun indekslerinin diskte kapladığı toplam alanı verir.

Özellikle pg_cancel_backend, pg_terminate_backend, pg_database_size ve pg_total_relation_size fonksiyonları; canlı sistemlerde izleme, bakım ve sorun çözme süreçlerinde sık kullanılan fonksiyonlardır.

Sonuç: PostgreSQL Sistem Tablolarını Tanımak Neden Önemlidir?

PostgreSQL’in katalog şeması (pg_catalog) ve sistem tabloları, veritabanı yönetiminin temelini oluşturur. Bu yazıda:

  • PostgreSQL veri sözlüğü ve katalog şeması kavramlarını,
  • En önemli sistem tablolarını (pg_class, pg_database, pg_stat_activity, pg_locks, pg_settings vb.),
  • Sistem ve yönetim fonksiyonlarını (pg_backend_pid, pg_cancel_backend, pg_database_size vb.)

özetlemiş olduk. Bu yapıların iyi anlaşılması, özellikle performans izleme, hata ayıklama ve kapasite planlama süreçlerinde büyük avantaj sağlar.

Kaynaklar ve Devamı

Yazımızdaki kodlar ve daha fazlası sitemizde yer almaktadır: http://latestsoftwaredevelopers.com/

Bu yazımızın sonuna geldik. İyi çalışmalar! Takip etmeyi unutmayın 😊

Beğendiysen bir çay ısmarlayabilirsin ☕

Bana çay ısmarla

Database ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *