Bağlantı işlemeyi anlama

Tamamlandı

Postgres, işlem tabanlı bir bağlantı modeli kullanır. Bağlantı kurmak, işletim sistemini ve az miktarda bellek ayırmayı içerir. Her SQL sorgusu geçerli bir bağlantı kullanılarak yürütülür.

Bağlan ion durumları

Bağlantı dört durumdan birinde olabilir:

  • etkin - şu anda sorgu çalıştıran etkin bağlantılar.
  • idle - kullanılmayan bağlantıları açın.
  • işlemde boşta - bekleyen bir bağlantı, hiçbir iş yapmıyor. Bir bağlantının ne yaptığını ve ne kadar süreyle bu durumda olduğunu anlamak için pg_stat_activity kullanın.
  • idle in transaction (aborted) - Daha önce işlemde boşta olan ancak artık durdurulan bağlantılar.

İşlem tabanlı bağlantı modeli, birçok boşta bağlantının bakımının pahalı olmasını sağlar.

En fazla bağlantı sayısı

PostgreSQL, max_connections adlı bir sunucu parametresini kullanarak herhangi bir anda sunucuya en fazla eşzamanlı bağlantı sayısını sınırlar. PostgreSQL için Azure Veritabanı'da varsayılan değer işlem katmanınıza bağlıdır. İzin verilen değer 25 ile 5000 arasındadır.

PostgreSQL'in şirket içi uygulaması, süper kullanıcının veritabanının bütünlüğünü koruması için bazı bağlantıları ayırır. Bu rezervasyon genellikle max_connections değerinin %15'i olur.

PostgreSQL için Azure Veritabanı yönetilen bir çözümdür ve esnek sunucuyu izlemek için otomatik olarak üç bağlantı ayırır.

Not

PostgreSQL için Azure Veritabanı'da superuser_reserved_connections yönetecek sunucu parametresi yoktur.

Bağlantı havuzu

Bağlantıları sık sık açan ve kapatan istemci uygulamaları, bağlantı gecikme süresiyle karşılaşarak saniyede daha düşük işlem ve genel olarak daha yüksek uygulama gecikme süresine neden olabilir.

PostgreSQL için Azure Veritabanı, bağlantıları sık sık açmak ve kapatmak yerine bağlantı havuzu oluşturmanızı önerir. Bağlan ion havuzu, bağlantıları kapatıp yeniden oluşturma yerine mevcut bağlantıları yeniden kullanıyor. Bu işlem bağlantı gecikme süresini azaltır ve sunucudaki veritabanları için saniyede daha yüksek veritabanı işlemlerine izin verir.

Bağlan ion havuzu, sunucu başlatıldığında sabit bir bağlantı kümesi oluşturur ve bu bağlantılar korunur. Bağlan ion havuzu, sunucuda sürekli oluşturulan yeni bağlantıların neden olduğu bellek parçalanmasını azaltmaya da yardımcı olur.

PGBouncer, PostgreSQL için Azure Veritabanı yerleşik bir bağlantı havuzu çözümüdür. pgBouncer'ı etkinleştirmek için:

  1. Azure portalında PostgreSQL için Azure Veritabanı sunucunuza gidin.
  2. Sol menüden Sunucu Parametreleri'ni seçin.
  3. Arama çubuğunda PgBouncer'ı arayın.
  4. PgBouncer'ı etkinleştirmek için pgbouncer.enabled ayarını true olarak ayarlayın. Bu ayar sunucunun yeniden başlatılmasını gerektirmez.
  5. pgbouncer.default_pool_size, ihtiyacınız olan kullanıcı/veritabanı çifti başına bağlantı sayısına ayarlayın. Varsayılan değer 50'dir.
  6. pgBouncer.pool_mode parametresini TRANSACTION olarak ayarlayın.

Not

PgBouncer hem genel erişim hem de özel erişim ağında Genel Amaçlı ve Bellek için İyileştirilmiş işlem katmanlarında desteklenir. PgBouncer, Burstable işlem katmanında desteklenmez. İşlem katmanı Genel Amaçlı veya Bellek için İyileştirilmiş olan Veri Artırılabilir olarak değiştirildiğinde PGBouncer özelliği kaybolur.