Postgres Advanced Server

Performans: InfiniteCache

Veritabanı başarımında en kilit noktalardan birisi paylaşılan tampon bellek miktarını sağlayan sistem belleği miktarıdır. İstenen tüm veri önce paylaşımlı tampon belleğe atılarak okunmalı ve sonra işlenmelidir. Zira paylaşımlı tampon bellek üzerindeki veriyi işlemek disk üzerindeki veriyi işlemeye göre kat kat hızlıdır.

EnterpriseDB tarafından geliştirilen InfiniteCache sayesinde Postgres Advanced Server’a sınırsız bellek sağlamak mümkün olmaktadır. InfiniteCache ile veritabanı sistemleri mevcut sunucu dışındaki sistemlere erişerek onların üzerindeki bellekleri tampon bellek olarak kullanabilir.


InfiniteCache Sınırsız Bellek

Doğal olarak, bazı durumlarda tampon bellek dolar ve yeni gelen istek üzerine buradaki verinin bir kısmının üzerine yazılarak yeni veri yerleştirilir. Halbuki silinen veriye tekrar ulaşmak ve veri üzerinde yeni bir işlem yapmak gerekebilir. Bu durumda verinin disk üzerinden tekrar okunması ve tampon belleğe yeniden yerleştirilmesi gerekir. Tampon belleğin kısıtlı olduğu durumlarda hiç gereği yokken sürekli disk üzerinden yeniden okunan veriler sebebi ile uygulama performansı düşer. Tüm bunların sebebi bellek sınırlamasıdır.

Keşke uygulamamızın isteklerine göre istediğimiz kadar, sınırsız bellek sağlayabilsek...

Böylece, diskten yeniden okumaları mümkün olduğunca azaltabilir, sık ulaşılan veriyi tampon bellekte mümkün olduğunca uzun süre tutabilir, uygulamamızın en optimal performans değerlerinde çalışmasını sağlayabilirdik.

EnterpriseDB tarafından geliştirilen InfiniteCache sayesinde Postgres Advanced Server’a sınırsız bellek sağlamak mümkün olmaktadır. InfiniteCache ile veritabanı sistemleri mevcut sunucu dışındaki sistemlere erişerek onların üzerindeki bellekleri tampon bellek olarak kullanabilir.


InfiniteCache ile sağlanan bu şekildeki dağıtık tampon bellek mekanizmasının en önemli artısı, dağıtık mimariye eklenen yeni bir sunucu olduğunda tüm belleğin sıfırlanmak zorunda olmamasıdır.

Memcached tabanlı diğer sistemlerin zayıf yanı; bu önemli özellikten yoksun olduklarından dolayı, her yeni bellek sunucusu ortama eklendiğinde, belleğin sıfırlanmasından kaynaklı olarak bellekte yer alan verinin tamamının diskten yeniden okunması gerektiğinden, bir anda sistemde aşırı yoğunluk yaşanmasına sebep olmasıdır.

Postgres Advanced Server’da yer alan InfiniteCache ile ortama yeni bir bellek sunucusu eklendiğinde, tampon belleğin sadece bir kısmı sıfırlanarak yeniden oluşturulur. Yeniden oluşturulacak olan tampon bellek verisinin miktarı, sistemde harici tampon bellek sunucusunun sayısı ile alakalıdır.

Örneğin aynı özelliklerde, bellek boyutunda harici 4 adet InfiniteCache sunucusu olan bir sistemde, bir ek sunucu eklendiğinde, sadece %20’lik veri sıfırlanarak yeniden oluşturulur, %80’lik kısım aynen kalır.

InfiniteCache özelliği, Postgres Advanced Server’a, ağ üzerinde yer alan sadece yüksek belleği için oluşturulmuş dolayısı ile ucuza maledilmiş sunucuların tampon bellek olarak kullanımını mümkün kılar.

Bir anlamda blade tipi bellek yapılandırma mimarisinin önünü açan InfiniteCache size performans artışı sağladığı kadar, maliyet tasarrufu da sağlar.


EDB Postgres - InfiniteCache Test

Grafik Postgres Advanced Server üzerinde yapılan bir testin InfiniteCache ile ve InfiniteCache olmadan yapılan sonuçlarını göstermektedir.*

InfiniteCache devredeyken, diskten bir veri bloğu ilk defa okunduğunda, aynı zamanda paylaşımlı tampon belleğe bir kopyası alınır. Eğer zaman içinde aynı veri bloğu tekrar istenirse, önce paylaşımlı tampon bellekte bu veri aranır. Eğer paylaşımlı tampon bellekte bu veri bloğu bulunamazsa o zaman ikincil bellek sunucularındaki tampon belleklerde aynı veri aranır. InfiniteCache ile yapılandırılmış olan bellekler daha büyük olduğundan bu verinin bulunması olasılığı daha yüksektir, ve bulunduğunda istek karşılanır. Bu durum veri bloğunun diskten yeniden getirilmesinden kat kat hızlıdır.

Eğer veri bloğu ikincil tampon belleklerde de bulunamazsa ancak o zaman diskten veri tekrar çağrılır ve tampon belleğe bir kopyası yerleştirilir.

Tüm bunlar uygulama katmanından bağımsız olarak gerçekleşmektedir. Yazılım katmanında herhangi bir kod değişikliği yapılmasına gerek yoktur.

İkincil tampon belleğin kapasitesini arttırmak için InfiniteCache veri sıkıştırması kullanabilme yeteneğine sahiptir. Sıkıştırma bellekler üzerinde daha fazla veri saklama sağladığı gibi aynı zamanda da ağ üzerinden çağrılacak olan veri boyutunu düşürdüğü için bant genişliği ihtiyacını da azaltır.

* Testler 250GB veritabanı üzerinde %100 SELECT ifadeleri kullanılarak ve sadece 1 cache node ile yapılmıştır.


InfiniteCache Isınma Yeteneği

InfiniteCache bellek sunucularının “ısınmasını” sağlayabilir.

Isınmadan kasıt, uygulama daha başlamadan önce seçilen bazı tabloların, indexleri ile veya yalnız olarak bellek sunucularındaki tamponlara yerleştirilmesidir. Bu da veritabanının daha hızlı olan tampon belleklerdeki veriden faydalanmasına ve uygulama başladığında ilk planda diskten okumak yerine aynı verileri bellekten sorgulamak şansına sahip olmasını sağlar.

Her bellek sunucusu üzerindeki veriye ait istatistikler kolayca alınarak mevcut kullanımın analizi yapılabilir. InfiniteCache ikincil belleklerde daha önce erişilmiş olan verinin kopyalarını tuttuğundan, özellikle sürekli aynı veriye erişilen uygulamalarda çok büyük performans artışları sağlanmaktadır.

Kullanım Avantajları

  • Ucuz donanımları veritabanı belleğini artırmak için kullanabilirsiniz.
  • Donanımınızı dikey olarak büyütemediğiniz durumlarda (maksimum bellek miktarı) yatay olarak rahatlıkla büyütebilirsiniz.
  • Uygulama katmanında herhangi bir değişiklik yapmanıza gerek yoktur.
  • Bellek sunucularındaki tampona yerleştirmeden önce veri sıkıştırılabilir ve daha fazla veri tampon üzerine yerleştirilebilir, aynı zamanda ağ üzerinden yapılacak veri transferi azaltılır.
  • Isınma özelliği ile başlangıçta uygulamanın kullanacağı tablolar ve/veya dizinler (index) belleğe alınarak, ilk okumaların disk yerine tampon üzerinden yapılması sağlanabilir.
  • Bellek sunucularındaki tampon üzerinde yer alan veriye ait istatistiki bilgiler toplu olarak veya tek tek alınabilir ve analiz edilebilir.
  • InfiniteCache başka hiçbir aracın sağlayamayacağı performans artışı sağlayabilir.