PostgreSQL Buffer Cache Nedir? Nasıl Kurulur?

PostgreSQL Buffer Cache Nedir? Nasıl Kurulur?
14 Ağu 2023 · Güncellendi: 9 Ağustos 2026

Pg_buffercache, PostgreSQL üzerinde kullanılan ve sorguların performans analizi için oldukça yararlı olabilen, bir verinin ne kadar önbelleğe alındığını görmenizi sağlayan bir PostgreSQL extension’udur. Eğer belirli bir ilişkinin verileri önbelleğe alındıysa, sorgunuzun verileri almak için doğrudan disk üzerindeki verilere erişmesi gerekmez, bunun yerine çok daha hızlı bir şekilde önbellekten bu verilere erişebilir. Pg_buffercache Nedir?

Pg_buffercache, shared buffers içeriğini incelemeyi sağlayan bir PostreSQL extension’udur. Bu extension’u kullanarak belirli bir objenin önbelleğe alınıp alınmadığını anlayabilirsiniz. Ayrıca önbelleğe alma ile alakalı performans sorunlarını gidermenize de yardımcı olabilir.

buffercache

Pg_buffercache Kurulumu

Öncelikle PostgreSQL sunucunuzda contrib paketinin kurulu olması gerekmektedir. Contrip paketi ile birçok PostgreSQL extension’unun source dosyasını sunucunuza almış olursunuz. Daha sonra ise PostgreSQL ile veri tabanına bağlanıp pg_buffercache extension’unu create edebilirsiniz.

 

  Veri analitiği ve finansal grafikleri temsil eden kavramsal görsel

Pg_buffercache Kullanımı

Spesifik bir tablo için istatistikleri görüntülemeyi deneyeceğiz. Testlerimiz için PostgreSQL veri tabanında employee adında bir tablo oluşturduk ve içerisine bir milyon satırlık insert gerçekleştirdik. İlk adım olarak tablomuzun relfilenode’unu bulacağız. Tablo ve indeks gibi database objeleri OID’ler üzerinden yönetilirken içerdiği data dosyaları relfilenode değişkeni aracılığıyla yönetilir. Tablo ve indexlerin relfilenode ve OID değeri temelde aynıdır, fakat relfilenode değişkeni TRUNCATE, REINDEX, CLUSTER komutları kullanıldığında değişir. Tablomuzun relfilenode’unu aşağıdaki komutla bulabiliriz:

 

 

Relfilenode’u bulduktan sonra, OS cache istatistiklerini aşağıdaki sorgu ile görebiliriz:

 

Bu komut sonucunda aşağıdaki kolonları göreceğiz:

 

PostgreSQL buffer cache alan tanımları (bufferid, relblocknumber, isdirty, kullanım sayısı)

Mevcut Veritabanıyla İlişkili Objelerin Kullandığı Buffer (arabellek) Sayısını Görmek

Alttaki sorgu ile mevcut veritabanınızda önbelleğe(cache) alınmış top 10 obje için buffer istatistiklerini alabilirsiniz:

 

pg_buffercache sorgusu ile en çok buffer kullanan tabloların listesi

 

Veritabanlarının Cache’e (önbellek) Alınmış Block Sayılarını Görmek

Aşağıdaki sorgu ile mevcut veritabanınızın ve eğer varsa diğer veritabanlarınızın cache block sayılarını gözlemleyebilirsiniz:

Veritabanına göre önbelleğe alınmış blok sayısını gösteren SQL sorgusu

Pg_buffercache Performance Tuning

Şimdi örnek bir senaryo ile buffer kullanımının performans üzerindeki etkisini gözlemleyeceğiz. Aşağıdaki örnekte ilk olarak veritabanımızı restart ettikten sonra (cold cache) ’employee’ tablosunun pg_buffercache kullanılarak buffer’a (önbelleğe) alınıp alınmadığını kontrol ettik. Gördüğünüz gibi pg_buffercache çıktısında sıfır kayıt var. 

 

Belirli bir tablo için pg_buffercache sorgusu (0 satır dönen örnek)

Daha sonra ‘explain analyze’ çalıştırdık ve sorgu 255 ms civarında sürdü. (cold cache)

EXPLAIN ANALYZE BUFFERS çıktısı - sorgu planı ve buffer kullanımı

Daha sonra pg_buffercache kullanarak buffer içeriğini kontrol ettik ve bu sefer tablonun buffer’a alındığını gözlemledik. 

 

Sorgu sonrası pg_buffercache tablosunda dolu buffer kayıtları

Daha sonra aynı sorguyu tekrar çalıştırdık ve bu sefer 156 ms’de tamamlandı. (warm cache) 

 

İkinci çalıştırmada EXPLAIN ANALYZE BUFFERS çıktısı - önbellek isabet oranı artışı

Bu sonuçlara baktığımızda önbelleğe alınan objeler üzerinde çalıştırılan sorguların çok daha hızlı sonuç döndürdüğünü görebiliriz.

Pg_buffercache gibi PostgreSQL özelliklerinin ve uzantılarının etkili bir şekilde kullanımı, veritabanı yönetiminde performansın optimize edilmesi için oldukça önemlidir. 

GTech olarak, sağlık, bankacılık, telekomünikasyon, perakende, enerji, kamu gibi birçok sektörde sistem ve veritabanı yönetimi hizmeti sunuyoruz. Siz de PostgreSQL üzerinde veri önbellekleme, performans analizi veya diğer konularda daha detaylı bilgi sahibi olmak için bizimle iletişime geçebilirsiniz.

Hazırlayan: GTech Sistem ve Veritabanı Yönetimi Ekibi